/*
Copyright 2014 Igor Vaynberg

Version: 3.5.2 Timestamp: Sat Nov  1 14:43:36 EDT 2014

This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
General Public License version 2 (the "GPL License"). You may choose either license to govern your
use of this software only upon the condition that you accept all of the terms of either the Apache
License or the GPL License.

You may obtain a copy of the Apache License and the GPL License at:

http://www.apache.org/licenses/LICENSE-2.0
http://www.gnu.org/licenses/gpl-2.0.html

Unless required by applicable law or agreed to in writing, software distributed under the Apache License
or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either express or implied. See the Apache License and the GPL License for the specific language governing
permissions and limitations under the Apache License and the GPL License.
*/
! ( function ( a ) {
	'undefined' == typeof a.fn.each2 &&
		a.extend( a.fn, {
			each2: function ( b ) {
				for (
					var c = a( [ 0 ] ), d = -1, e = this.length;
					++d < e &&
					( c.context = c[ 0 ] = this[ d ] ) &&
					b.call( c[ 0 ], d, c ) !== ! 1;

				);
				return this;
			},
		} );
} )( jQuery ),
	( function ( a, b ) {
		'use strict';
		function n( b ) {
			var c = a( document.createTextNode( '' ) );
			b.before( c ), c.before( b ), c.remove();
		}
		function o( a ) {
			function b( a ) {
				return m[ a ] || a;
			}
			return a.replace( /[^\u0000-\u007E]/g, b );
		}
		function p( a, b ) {
			for ( var c = 0, d = b.length; d > c; c += 1 )
				if ( r( a, b[ c ] ) ) return c;
			return -1;
		}
		function q() {
			var b = a( l );
			b.appendTo( document.body );
			var c = {
				width: b.width() - b[ 0 ].clientWidth,
				height: b.height() - b[ 0 ].clientHeight,
			};
			return b.remove(), c;
		}
		function r( a, c ) {
			return a === c
				? ! 0
				: a === b || c === b
				? ! 1
				: null === a || null === c
				? ! 1
				: a.constructor === String
				? a + '' == c + ''
				: c.constructor === String
				? c + '' == a + ''
				: ! 1;
		}
		function s( a, b, c ) {
			var d, e, f;
			if ( null === a || a.length < 1 ) return [];
			for ( d = a.split( b ), e = 0, f = d.length; f > e; e += 1 )
				d[ e ] = c( d[ e ] );
			return d;
		}
		function t( a ) {
			return a.outerWidth( ! 1 ) - a.width();
		}
		function u( c ) {
			var d = 'keyup-change-value';
			c.on( 'keydown', function () {
				a.data( c, d ) === b && a.data( c, d, c.val() );
			} ),
				c.on( 'keyup', function () {
					var e = a.data( c, d );
					e !== b &&
						c.val() !== e &&
						( a.removeData( c, d ), c.trigger( 'keyup-change' ) );
				} );
		}
		function v( c ) {
			c.on( 'mousemove', function ( c ) {
				var d = h;
				( d === b || d.x !== c.pageX || d.y !== c.pageY ) &&
					a( c.target ).trigger( 'mousemove-filtered', c );
			} );
		}
		function w( a, c, d ) {
			d = d || b;
			var e;
			return function () {
				var b = arguments;
				window.clearTimeout( e ),
					( e = window.setTimeout( function () {
						c.apply( d, b );
					}, a ) );
			};
		}
		function x( a, b ) {
			var c = w( a, function ( a ) {
				b.trigger( 'scroll-debounced', a );
			} );
			b.on( 'scroll', function ( a ) {
				p( a.target, b.get() ) >= 0 && c( a );
			} );
		}
		function y( a ) {
			a[ 0 ] !== document.activeElement &&
				window.setTimeout( function () {
					var d,
						b = a[ 0 ],
						c = a.val().length;
					a.focus();
					var e = b.offsetWidth > 0 || b.offsetHeight > 0;
					e &&
						b === document.activeElement &&
						( b.setSelectionRange
							? b.setSelectionRange( c, c )
							: b.createTextRange &&
							  ( ( d = b.createTextRange() ),
							  d.collapse( ! 1 ),
							  d.select() ) );
				}, 0 );
		}
		function z( b ) {
			b = a( b )[ 0 ];
			var c = 0,
				d = 0;
			if ( 'selectionStart' in b )
				( c = b.selectionStart ), ( d = b.selectionEnd - c );
			else if ( 'selection' in document ) {
				b.focus();
				var e = document.selection.createRange();
				( d = document.selection.createRange().text.length ),
					e.moveStart( 'character', -b.value.length ),
					( c = e.text.length - d );
			}
			return { offset: c, length: d };
		}
		function A( a ) {
			a.preventDefault(), a.stopPropagation();
		}
		function B( a ) {
			a.preventDefault(), a.stopImmediatePropagation();
		}
		function C( b ) {
			if ( ! g ) {
				var c =
					b[ 0 ].currentStyle ||
					window.getComputedStyle( b[ 0 ], null );
				( g = a( document.createElement( 'div' ) ).css( {
					position: 'absolute',
					left: '-10000px',
					top: '-10000px',
					display: 'none',
					fontSize: c.fontSize,
					fontFamily: c.fontFamily,
					fontStyle: c.fontStyle,
					fontWeight: c.fontWeight,
					letterSpacing: c.letterSpacing,
					textTransform: c.textTransform,
					whiteSpace: 'nowrap',
				} ) ),
					g.attr( 'class', 'select2-sizer' ),
					a( document.body ).append( g );
			}
			return g.text( b.val() ), g.width();
		}
		function D( b, c, d ) {
			var e,
				g,
				f = [];
			( e = a.trim( b.attr( 'class' ) ) ),
				e &&
					( ( e = '' + e ),
					a( e.split( /\s+/ ) ).each2( function () {
						0 === this.indexOf( 'select2-' ) && f.push( this );
					} ) ),
				( e = a.trim( c.attr( 'class' ) ) ),
				e &&
					( ( e = '' + e ),
					a( e.split( /\s+/ ) ).each2( function () {
						0 !== this.indexOf( 'select2-' ) &&
							( ( g = d( this ) ), g && f.push( g ) );
					} ) ),
				b.attr( 'class', f.join( ' ' ) );
		}
		function E( a, b, c, d ) {
			var e = o( a.toUpperCase() ).indexOf( o( b.toUpperCase() ) ),
				f = b.length;
			return 0 > e
				? ( c.push( d( a ) ), void 0 )
				: ( c.push( d( a.substring( 0, e ) ) ),
				  c.push( "<span class='select2-match'>" ),
				  c.push( d( a.substring( e, e + f ) ) ),
				  c.push( '</span>' ),
				  c.push( d( a.substring( e + f, a.length ) ) ),
				  void 0 );
		}
		function F( a ) {
			var b = {
				'\\': '&#92;',
				'&': '&amp;',
				'<': '&lt;',
				'>': '&gt;',
				'"': '&quot;',
				"'": '&#39;',
				'/': '&#47;',
			};
			return String( a ).replace( /[&<>"'\/\\]/g, function ( a ) {
				return b[ a ];
			} );
		}
		function G( c ) {
			var d,
				e = null,
				f = c.quietMillis || 100,
				g = c.url,
				h = this;
			return function ( i ) {
				window.clearTimeout( d ),
					( d = window.setTimeout( function () {
						var d = c.data,
							f = g,
							j =
								c.transport ||
								a.fn.select2.ajaxDefaults.transport,
							k = {
								type: c.type || 'GET',
								cache: c.cache || ! 1,
								jsonpCallback: c.jsonpCallback || b,
								dataType: c.dataType || 'json',
							},
							l = a.extend(
								{},
								a.fn.select2.ajaxDefaults.params,
								k
							);
						( d = d
							? d.call( h, i.term, i.page, i.context )
							: null ),
							( f =
								'function' == typeof f
									? f.call( h, i.term, i.page, i.context )
									: f ),
							e && 'function' == typeof e.abort && e.abort(),
							c.params &&
								( a.isFunction( c.params )
									? a.extend( l, c.params.call( h ) )
									: a.extend( l, c.params ) ),
							a.extend( l, {
								url: f,
								dataType: c.dataType,
								data: d,
								success: function ( a ) {
									var b = c.results( a, i.page, i );
									i.callback( b );
								},
								error: function ( a, b, c ) {
									var d = {
										hasError: ! 0,
										jqXHR: a,
										textStatus: b,
										errorThrown: c,
									};
									i.callback( d );
								},
							} ),
							( e = j.call( h, l ) );
					}, f ) );
			};
		}
		function H( b ) {
			var d,
				e,
				c = b,
				f = function ( a ) {
					return '' + a.text;
				};
			a.isArray( c ) && ( ( e = c ), ( c = { results: e } ) ),
				a.isFunction( c ) === ! 1 &&
					( ( e = c ),
					( c = function () {
						return e;
					} ) );
			var g = c();
			return (
				g.text &&
					( ( f = g.text ),
					a.isFunction( f ) ||
						( ( d = g.text ),
						( f = function ( a ) {
							return a[ d ];
						} ) ) ),
				function ( b ) {
					var g,
						d = b.term,
						e = { results: [] };
					return '' === d
						? ( b.callback( c() ), void 0 )
						: ( ( g = function ( c, e ) {
								var h, i;
								if ( ( ( c = c[ 0 ] ), c.children ) ) {
									h = {};
									for ( i in c )
										c.hasOwnProperty( i ) &&
											( h[ i ] = c[ i ] );
									( h.children = [] ),
										a( c.children ).each2( function (
											a,
											b
										) {
											g( b, h.children );
										} ),
										( h.children.length ||
											b.matcher( d, f( h ), c ) ) &&
											e.push( h );
								} else b.matcher( d, f( c ), c ) && e.push( c );
						  } ),
						  a( c().results ).each2( function ( a, b ) {
								g( b, e.results );
						  } ),
						  b.callback( e ),
						  void 0 );
				}
			);
		}
		function I( c ) {
			var d = a.isFunction( c );
			return function ( e ) {
				var f = e.term,
					g = { results: [] },
					h = d ? c( e ) : c;
				a.isArray( h ) &&
					( a( h ).each( function () {
						var a = this.text !== b,
							c = a ? this.text : this;
						( '' === f || e.matcher( f, c ) ) &&
							g.results.push(
								a ? this : { id: this, text: this }
							);
					} ),
					e.callback( g ) );
			};
		}
		function J( b, c ) {
			if ( a.isFunction( b ) ) return ! 0;
			if ( ! b ) return ! 1;
			if ( 'string' == typeof b ) return ! 0;
			throw new Error(
				c + ' must be a string, function, or falsy value'
			);
		}
		function K( b, c ) {
			if ( a.isFunction( b ) ) {
				var d = Array.prototype.slice.call( arguments, 2 );
				return b.apply( c, d );
			}
			return b;
		}
		function L( b ) {
			var c = 0;
			return (
				a.each( b, function ( a, b ) {
					b.children ? ( c += L( b.children ) ) : c++;
				} ),
				c
			);
		}
		function M( a, c, d, e ) {
			var h,
				i,
				j,
				k,
				l,
				f = a,
				g = ! 1;
			if (
				! e.createSearchChoice ||
				! e.tokenSeparators ||
				e.tokenSeparators.length < 1
			)
				return b;
			for (;;) {
				for (
					i = -1, j = 0, k = e.tokenSeparators.length;
					k > j &&
					( ( l = e.tokenSeparators[ j ] ),
					( i = a.indexOf( l ) ),
					! ( i >= 0 ) );
					j++
				);
				if ( 0 > i ) break;
				if (
					( ( h = a.substring( 0, i ) ),
					( a = a.substring( i + l.length ) ),
					h.length > 0 &&
						( ( h = e.createSearchChoice.call( this, h, c ) ),
						h !== b &&
							null !== h &&
							e.id( h ) !== b &&
							null !== e.id( h ) ) )
				) {
					for ( g = ! 1, j = 0, k = c.length; k > j; j++ )
						if ( r( e.id( h ), e.id( c[ j ] ) ) ) {
							g = ! 0;
							break;
						}
					g || d( h );
				}
			}
			return f !== a ? a : void 0;
		}
		function N() {
			var b = this;
			a.each( arguments, function ( a, c ) {
				b[ c ].remove(), ( b[ c ] = null );
			} );
		}
		function O( b, c ) {
			var d = function () {};
			return (
				( d.prototype = new b() ),
				( d.prototype.constructor = d ),
				( d.prototype.parent = b.prototype ),
				( d.prototype = a.extend( d.prototype, c ) ),
				d
			);
		}
		if ( window.Select2 === b ) {
			var c,
				d,
				e,
				f,
				g,
				i,
				j,
				h = { x: 0, y: 0 },
				k = {
					TAB: 9,
					ENTER: 13,
					ESC: 27,
					SPACE: 32,
					LEFT: 37,
					UP: 38,
					RIGHT: 39,
					DOWN: 40,
					SHIFT: 16,
					CTRL: 17,
					ALT: 18,
					PAGE_UP: 33,
					PAGE_DOWN: 34,
					HOME: 36,
					END: 35,
					BACKSPACE: 8,
					DELETE: 46,
					isArrow: function ( a ) {
						switch ( ( a = a.which ? a.which : a ) ) {
							case k.LEFT:
							case k.RIGHT:
							case k.UP:
							case k.DOWN:
								return ! 0;
						}
						return ! 1;
					},
					isControl: function ( a ) {
						var b = a.which;
						switch ( b ) {
							case k.SHIFT:
							case k.CTRL:
							case k.ALT:
								return ! 0;
						}
						return a.metaKey ? ! 0 : ! 1;
					},
					isFunctionKey: function ( a ) {
						return (
							( a = a.which ? a.which : a ), a >= 112 && 123 >= a
						);
					},
				},
				l = "<div class='select2-measure-scrollbar'></div>",
				m = {
					'\u24b6': 'A',
					'\uff21': 'A',
					'\xc0': 'A',
					'\xc1': 'A',
					'\xc2': 'A',
					'\u1ea6': 'A',
					'\u1ea4': 'A',
					'\u1eaa': 'A',
					'\u1ea8': 'A',
					'\xc3': 'A',
					'\u0100': 'A',
					'\u0102': 'A',
					'\u1eb0': 'A',
					'\u1eae': 'A',
					'\u1eb4': 'A',
					'\u1eb2': 'A',
					'\u0226': 'A',
					'\u01e0': 'A',
					'\xc4': 'A',
					'\u01de': 'A',
					'\u1ea2': 'A',
					'\xc5': 'A',
					'\u01fa': 'A',
					'\u01cd': 'A',
					'\u0200': 'A',
					'\u0202': 'A',
					'\u1ea0': 'A',
					'\u1eac': 'A',
					'\u1eb6': 'A',
					'\u1e00': 'A',
					'\u0104': 'A',
					'\u023a': 'A',
					'\u2c6f': 'A',
					'\ua732': 'AA',
					'\xc6': 'AE',
					'\u01fc': 'AE',
					'\u01e2': 'AE',
					'\ua734': 'AO',
					'\ua736': 'AU',
					'\ua738': 'AV',
					'\ua73a': 'AV',
					'\ua73c': 'AY',
					'\u24b7': 'B',
					'\uff22': 'B',
					'\u1e02': 'B',
					'\u1e04': 'B',
					'\u1e06': 'B',
					'\u0243': 'B',
					'\u0182': 'B',
					'\u0181': 'B',
					'\u24b8': 'C',
					'\uff23': 'C',
					'\u0106': 'C',
					'\u0108': 'C',
					'\u010a': 'C',
					'\u010c': 'C',
					'\xc7': 'C',
					'\u1e08': 'C',
					'\u0187': 'C',
					'\u023b': 'C',
					'\ua73e': 'C',
					'\u24b9': 'D',
					'\uff24': 'D',
					'\u1e0a': 'D',
					'\u010e': 'D',
					'\u1e0c': 'D',
					'\u1e10': 'D',
					'\u1e12': 'D',
					'\u1e0e': 'D',
					'\u0110': 'D',
					'\u018b': 'D',
					'\u018a': 'D',
					'\u0189': 'D',
					'\ua779': 'D',
					'\u01f1': 'DZ',
					'\u01c4': 'DZ',
					'\u01f2': 'Dz',
					'\u01c5': 'Dz',
					'\u24ba': 'E',
					'\uff25': 'E',
					'\xc8': 'E',
					'\xc9': 'E',
					'\xca': 'E',
					'\u1ec0': 'E',
					'\u1ebe': 'E',
					'\u1ec4': 'E',
					'\u1ec2': 'E',
					'\u1ebc': 'E',
					'\u0112': 'E',
					'\u1e14': 'E',
					'\u1e16': 'E',
					'\u0114': 'E',
					'\u0116': 'E',
					'\xcb': 'E',
					'\u1eba': 'E',
					'\u011a': 'E',
					'\u0204': 'E',
					'\u0206': 'E',
					'\u1eb8': 'E',
					'\u1ec6': 'E',
					'\u0228': 'E',
					'\u1e1c': 'E',
					'\u0118': 'E',
					'\u1e18': 'E',
					'\u1e1a': 'E',
					'\u0190': 'E',
					'\u018e': 'E',
					'\u24bb': 'F',
					'\uff26': 'F',
					'\u1e1e': 'F',
					'\u0191': 'F',
					'\ua77b': 'F',
					'\u24bc': 'G',
					'\uff27': 'G',
					'\u01f4': 'G',
					'\u011c': 'G',
					'\u1e20': 'G',
					'\u011e': 'G',
					'\u0120': 'G',
					'\u01e6': 'G',
					'\u0122': 'G',
					'\u01e4': 'G',
					'\u0193': 'G',
					'\ua7a0': 'G',
					'\ua77d': 'G',
					'\ua77e': 'G',
					'\u24bd': 'H',
					'\uff28': 'H',
					'\u0124': 'H',
					'\u1e22': 'H',
					'\u1e26': 'H',
					'\u021e': 'H',
					'\u1e24': 'H',
					'\u1e28': 'H',
					'\u1e2a': 'H',
					'\u0126': 'H',
					'\u2c67': 'H',
					'\u2c75': 'H',
					'\ua78d': 'H',
					'\u24be': 'I',
					'\uff29': 'I',
					'\xcc': 'I',
					'\xcd': 'I',
					'\xce': 'I',
					'\u0128': 'I',
					'\u012a': 'I',
					'\u012c': 'I',
					'\u0130': 'I',
					'\xcf': 'I',
					'\u1e2e': 'I',
					'\u1ec8': 'I',
					'\u01cf': 'I',
					'\u0208': 'I',
					'\u020a': 'I',
					'\u1eca': 'I',
					'\u012e': 'I',
					'\u1e2c': 'I',
					'\u0197': 'I',
					'\u24bf': 'J',
					'\uff2a': 'J',
					'\u0134': 'J',
					'\u0248': 'J',
					'\u24c0': 'K',
					'\uff2b': 'K',
					'\u1e30': 'K',
					'\u01e8': 'K',
					'\u1e32': 'K',
					'\u0136': 'K',
					'\u1e34': 'K',
					'\u0198': 'K',
					'\u2c69': 'K',
					'\ua740': 'K',
					'\ua742': 'K',
					'\ua744': 'K',
					'\ua7a2': 'K',
					'\u24c1': 'L',
					'\uff2c': 'L',
					'\u013f': 'L',
					'\u0139': 'L',
					'\u013d': 'L',
					'\u1e36': 'L',
					'\u1e38': 'L',
					'\u013b': 'L',
					'\u1e3c': 'L',
					'\u1e3a': 'L',
					'\u0141': 'L',
					'\u023d': 'L',
					'\u2c62': 'L',
					'\u2c60': 'L',
					'\ua748': 'L',
					'\ua746': 'L',
					'\ua780': 'L',
					'\u01c7': 'LJ',
					'\u01c8': 'Lj',
					'\u24c2': 'M',
					'\uff2d': 'M',
					'\u1e3e': 'M',
					'\u1e40': 'M',
					'\u1e42': 'M',
					'\u2c6e': 'M',
					'\u019c': 'M',
					'\u24c3': 'N',
					'\uff2e': 'N',
					'\u01f8': 'N',
					'\u0143': 'N',
					'\xd1': 'N',
					'\u1e44': 'N',
					'\u0147': 'N',
					'\u1e46': 'N',
					'\u0145': 'N',
					'\u1e4a': 'N',
					'\u1e48': 'N',
					'\u0220': 'N',
					'\u019d': 'N',
					'\ua790': 'N',
					'\ua7a4': 'N',
					'\u01ca': 'NJ',
					'\u01cb': 'Nj',
					'\u24c4': 'O',
					'\uff2f': 'O',
					'\xd2': 'O',
					'\xd3': 'O',
					'\xd4': 'O',
					'\u1ed2': 'O',
					'\u1ed0': 'O',
					'\u1ed6': 'O',
					'\u1ed4': 'O',
					'\xd5': 'O',
					'\u1e4c': 'O',
					'\u022c': 'O',
					'\u1e4e': 'O',
					'\u014c': 'O',
					'\u1e50': 'O',
					'\u1e52': 'O',
					'\u014e': 'O',
					'\u022e': 'O',
					'\u0230': 'O',
					'\xd6': 'O',
					'\u022a': 'O',
					'\u1ece': 'O',
					'\u0150': 'O',
					'\u01d1': 'O',
					'\u020c': 'O',
					'\u020e': 'O',
					'\u01a0': 'O',
					'\u1edc': 'O',
					'\u1eda': 'O',
					'\u1ee0': 'O',
					'\u1ede': 'O',
					'\u1ee2': 'O',
					'\u1ecc': 'O',
					'\u1ed8': 'O',
					'\u01ea': 'O',
					'\u01ec': 'O',
					'\xd8': 'O',
					'\u01fe': 'O',
					'\u0186': 'O',
					'\u019f': 'O',
					'\ua74a': 'O',
					'\ua74c': 'O',
					'\u01a2': 'OI',
					'\ua74e': 'OO',
					'\u0222': 'OU',
					'\u24c5': 'P',
					'\uff30': 'P',
					'\u1e54': 'P',
					'\u1e56': 'P',
					'\u01a4': 'P',
					'\u2c63': 'P',
					'\ua750': 'P',
					'\ua752': 'P',
					'\ua754': 'P',
					'\u24c6': 'Q',
					'\uff31': 'Q',
					'\ua756': 'Q',
					'\ua758': 'Q',
					'\u024a': 'Q',
					'\u24c7': 'R',
					'\uff32': 'R',
					'\u0154': 'R',
					'\u1e58': 'R',
					'\u0158': 'R',
					'\u0210': 'R',
					'\u0212': 'R',
					'\u1e5a': 'R',
					'\u1e5c': 'R',
					'\u0156': 'R',
					'\u1e5e': 'R',
					'\u024c': 'R',
					'\u2c64': 'R',
					'\ua75a': 'R',
					'\ua7a6': 'R',
					'\ua782': 'R',
					'\u24c8': 'S',
					'\uff33': 'S',
					'\u1e9e': 'S',
					'\u015a': 'S',
					'\u1e64': 'S',
					'\u015c': 'S',
					'\u1e60': 'S',
					'\u0160': 'S',
					'\u1e66': 'S',
					'\u1e62': 'S',
					'\u1e68': 'S',
					'\u0218': 'S',
					'\u015e': 'S',
					'\u2c7e': 'S',
					'\ua7a8': 'S',
					'\ua784': 'S',
					'\u24c9': 'T',
					'\uff34': 'T',
					'\u1e6a': 'T',
					'\u0164': 'T',
					'\u1e6c': 'T',
					'\u021a': 'T',
					'\u0162': 'T',
					'\u1e70': 'T',
					'\u1e6e': 'T',
					'\u0166': 'T',
					'\u01ac': 'T',
					'\u01ae': 'T',
					'\u023e': 'T',
					'\ua786': 'T',
					'\ua728': 'TZ',
					'\u24ca': 'U',
					'\uff35': 'U',
					'\xd9': 'U',
					'\xda': 'U',
					'\xdb': 'U',
					'\u0168': 'U',
					'\u1e78': 'U',
					'\u016a': 'U',
					'\u1e7a': 'U',
					'\u016c': 'U',
					'\xdc': 'U',
					'\u01db': 'U',
					'\u01d7': 'U',
					'\u01d5': 'U',
					'\u01d9': 'U',
					'\u1ee6': 'U',
					'\u016e': 'U',
					'\u0170': 'U',
					'\u01d3': 'U',
					'\u0214': 'U',
					'\u0216': 'U',
					'\u01af': 'U',
					'\u1eea': 'U',
					'\u1ee8': 'U',
					'\u1eee': 'U',
					'\u1eec': 'U',
					'\u1ef0': 'U',
					'\u1ee4': 'U',
					'\u1e72': 'U',
					'\u0172': 'U',
					'\u1e76': 'U',
					'\u1e74': 'U',
					'\u0244': 'U',
					'\u24cb': 'V',
					'\uff36': 'V',
					'\u1e7c': 'V',
					'\u1e7e': 'V',
					'\u01b2': 'V',
					'\ua75e': 'V',
					'\u0245': 'V',
					'\ua760': 'VY',
					'\u24cc': 'W',
					'\uff37': 'W',
					'\u1e80': 'W',
					'\u1e82': 'W',
					'\u0174': 'W',
					'\u1e86': 'W',
					'\u1e84': 'W',
					'\u1e88': 'W',
					'\u2c72': 'W',
					'\u24cd': 'X',
					'\uff38': 'X',
					'\u1e8a': 'X',
					'\u1e8c': 'X',
					'\u24ce': 'Y',
					'\uff39': 'Y',
					'\u1ef2': 'Y',
					'\xdd': 'Y',
					'\u0176': 'Y',
					'\u1ef8': 'Y',
					'\u0232': 'Y',
					'\u1e8e': 'Y',
					'\u0178': 'Y',
					'\u1ef6': 'Y',
					'\u1ef4': 'Y',
					'\u01b3': 'Y',
					'\u024e': 'Y',
					'\u1efe': 'Y',
					'\u24cf': 'Z',
					'\uff3a': 'Z',
					'\u0179': 'Z',
					'\u1e90': 'Z',
					'\u017b': 'Z',
					'\u017d': 'Z',
					'\u1e92': 'Z',
					'\u1e94': 'Z',
					'\u01b5': 'Z',
					'\u0224': 'Z',
					'\u2c7f': 'Z',
					'\u2c6b': 'Z',
					'\ua762': 'Z',
					'\u24d0': 'a',
					'\uff41': 'a',
					'\u1e9a': 'a',
					'\xe0': 'a',
					'\xe1': 'a',
					'\xe2': 'a',
					'\u1ea7': 'a',
					'\u1ea5': 'a',
					'\u1eab': 'a',
					'\u1ea9': 'a',
					'\xe3': 'a',
					'\u0101': 'a',
					'\u0103': 'a',
					'\u1eb1': 'a',
					'\u1eaf': 'a',
					'\u1eb5': 'a',
					'\u1eb3': 'a',
					'\u0227': 'a',
					'\u01e1': 'a',
					'\xe4': 'a',
					'\u01df': 'a',
					'\u1ea3': 'a',
					'\xe5': 'a',
					'\u01fb': 'a',
					'\u01ce': 'a',
					'\u0201': 'a',
					'\u0203': 'a',
					'\u1ea1': 'a',
					'\u1ead': 'a',
					'\u1eb7': 'a',
					'\u1e01': 'a',
					'\u0105': 'a',
					'\u2c65': 'a',
					'\u0250': 'a',
					'\ua733': 'aa',
					'\xe6': 'ae',
					'\u01fd': 'ae',
					'\u01e3': 'ae',
					'\ua735': 'ao',
					'\ua737': 'au',
					'\ua739': 'av',
					'\ua73b': 'av',
					'\ua73d': 'ay',
					'\u24d1': 'b',
					'\uff42': 'b',
					'\u1e03': 'b',
					'\u1e05': 'b',
					'\u1e07': 'b',
					'\u0180': 'b',
					'\u0183': 'b',
					'\u0253': 'b',
					'\u24d2': 'c',
					'\uff43': 'c',
					'\u0107': 'c',
					'\u0109': 'c',
					'\u010b': 'c',
					'\u010d': 'c',
					'\xe7': 'c',
					'\u1e09': 'c',
					'\u0188': 'c',
					'\u023c': 'c',
					'\ua73f': 'c',
					'\u2184': 'c',
					'\u24d3': 'd',
					'\uff44': 'd',
					'\u1e0b': 'd',
					'\u010f': 'd',
					'\u1e0d': 'd',
					'\u1e11': 'd',
					'\u1e13': 'd',
					'\u1e0f': 'd',
					'\u0111': 'd',
					'\u018c': 'd',
					'\u0256': 'd',
					'\u0257': 'd',
					'\ua77a': 'd',
					'\u01f3': 'dz',
					'\u01c6': 'dz',
					'\u24d4': 'e',
					'\uff45': 'e',
					'\xe8': 'e',
					'\xe9': 'e',
					'\xea': 'e',
					'\u1ec1': 'e',
					'\u1ebf': 'e',
					'\u1ec5': 'e',
					'\u1ec3': 'e',
					'\u1ebd': 'e',
					'\u0113': 'e',
					'\u1e15': 'e',
					'\u1e17': 'e',
					'\u0115': 'e',
					'\u0117': 'e',
					'\xeb': 'e',
					'\u1ebb': 'e',
					'\u011b': 'e',
					'\u0205': 'e',
					'\u0207': 'e',
					'\u1eb9': 'e',
					'\u1ec7': 'e',
					'\u0229': 'e',
					'\u1e1d': 'e',
					'\u0119': 'e',
					'\u1e19': 'e',
					'\u1e1b': 'e',
					'\u0247': 'e',
					'\u025b': 'e',
					'\u01dd': 'e',
					'\u24d5': 'f',
					'\uff46': 'f',
					'\u1e1f': 'f',
					'\u0192': 'f',
					'\ua77c': 'f',
					'\u24d6': 'g',
					'\uff47': 'g',
					'\u01f5': 'g',
					'\u011d': 'g',
					'\u1e21': 'g',
					'\u011f': 'g',
					'\u0121': 'g',
					'\u01e7': 'g',
					'\u0123': 'g',
					'\u01e5': 'g',
					'\u0260': 'g',
					'\ua7a1': 'g',
					'\u1d79': 'g',
					'\ua77f': 'g',
					'\u24d7': 'h',
					'\uff48': 'h',
					'\u0125': 'h',
					'\u1e23': 'h',
					'\u1e27': 'h',
					'\u021f': 'h',
					'\u1e25': 'h',
					'\u1e29': 'h',
					'\u1e2b': 'h',
					'\u1e96': 'h',
					'\u0127': 'h',
					'\u2c68': 'h',
					'\u2c76': 'h',
					'\u0265': 'h',
					'\u0195': 'hv',
					'\u24d8': 'i',
					'\uff49': 'i',
					'\xec': 'i',
					'\xed': 'i',
					'\xee': 'i',
					'\u0129': 'i',
					'\u012b': 'i',
					'\u012d': 'i',
					'\xef': 'i',
					'\u1e2f': 'i',
					'\u1ec9': 'i',
					'\u01d0': 'i',
					'\u0209': 'i',
					'\u020b': 'i',
					'\u1ecb': 'i',
					'\u012f': 'i',
					'\u1e2d': 'i',
					'\u0268': 'i',
					'\u0131': 'i',
					'\u24d9': 'j',
					'\uff4a': 'j',
					'\u0135': 'j',
					'\u01f0': 'j',
					'\u0249': 'j',
					'\u24da': 'k',
					'\uff4b': 'k',
					'\u1e31': 'k',
					'\u01e9': 'k',
					'\u1e33': 'k',
					'\u0137': 'k',
					'\u1e35': 'k',
					'\u0199': 'k',
					'\u2c6a': 'k',
					'\ua741': 'k',
					'\ua743': 'k',
					'\ua745': 'k',
					'\ua7a3': 'k',
					'\u24db': 'l',
					'\uff4c': 'l',
					'\u0140': 'l',
					'\u013a': 'l',
					'\u013e': 'l',
					'\u1e37': 'l',
					'\u1e39': 'l',
					'\u013c': 'l',
					'\u1e3d': 'l',
					'\u1e3b': 'l',
					'\u017f': 'l',
					'\u0142': 'l',
					'\u019a': 'l',
					'\u026b': 'l',
					'\u2c61': 'l',
					'\ua749': 'l',
					'\ua781': 'l',
					'\ua747': 'l',
					'\u01c9': 'lj',
					'\u24dc': 'm',
					'\uff4d': 'm',
					'\u1e3f': 'm',
					'\u1e41': 'm',
					'\u1e43': 'm',
					'\u0271': 'm',
					'\u026f': 'm',
					'\u24dd': 'n',
					'\uff4e': 'n',
					'\u01f9': 'n',
					'\u0144': 'n',
					'\xf1': 'n',
					'\u1e45': 'n',
					'\u0148': 'n',
					'\u1e47': 'n',
					'\u0146': 'n',
					'\u1e4b': 'n',
					'\u1e49': 'n',
					'\u019e': 'n',
					'\u0272': 'n',
					'\u0149': 'n',
					'\ua791': 'n',
					'\ua7a5': 'n',
					'\u01cc': 'nj',
					'\u24de': 'o',
					'\uff4f': 'o',
					'\xf2': 'o',
					'\xf3': 'o',
					'\xf4': 'o',
					'\u1ed3': 'o',
					'\u1ed1': 'o',
					'\u1ed7': 'o',
					'\u1ed5': 'o',
					'\xf5': 'o',
					'\u1e4d': 'o',
					'\u022d': 'o',
					'\u1e4f': 'o',
					'\u014d': 'o',
					'\u1e51': 'o',
					'\u1e53': 'o',
					'\u014f': 'o',
					'\u022f': 'o',
					'\u0231': 'o',
					'\xf6': 'o',
					'\u022b': 'o',
					'\u1ecf': 'o',
					'\u0151': 'o',
					'\u01d2': 'o',
					'\u020d': 'o',
					'\u020f': 'o',
					'\u01a1': 'o',
					'\u1edd': 'o',
					'\u1edb': 'o',
					'\u1ee1': 'o',
					'\u1edf': 'o',
					'\u1ee3': 'o',
					'\u1ecd': 'o',
					'\u1ed9': 'o',
					'\u01eb': 'o',
					'\u01ed': 'o',
					'\xf8': 'o',
					'\u01ff': 'o',
					'\u0254': 'o',
					'\ua74b': 'o',
					'\ua74d': 'o',
					'\u0275': 'o',
					'\u01a3': 'oi',
					'\u0223': 'ou',
					'\ua74f': 'oo',
					'\u24df': 'p',
					'\uff50': 'p',
					'\u1e55': 'p',
					'\u1e57': 'p',
					'\u01a5': 'p',
					'\u1d7d': 'p',
					'\ua751': 'p',
					'\ua753': 'p',
					'\ua755': 'p',
					'\u24e0': 'q',
					'\uff51': 'q',
					'\u024b': 'q',
					'\ua757': 'q',
					'\ua759': 'q',
					'\u24e1': 'r',
					'\uff52': 'r',
					'\u0155': 'r',
					'\u1e59': 'r',
					'\u0159': 'r',
					'\u0211': 'r',
					'\u0213': 'r',
					'\u1e5b': 'r',
					'\u1e5d': 'r',
					'\u0157': 'r',
					'\u1e5f': 'r',
					'\u024d': 'r',
					'\u027d': 'r',
					'\ua75b': 'r',
					'\ua7a7': 'r',
					'\ua783': 'r',
					'\u24e2': 's',
					'\uff53': 's',
					'\xdf': 's',
					'\u015b': 's',
					'\u1e65': 's',
					'\u015d': 's',
					'\u1e61': 's',
					'\u0161': 's',
					'\u1e67': 's',
					'\u1e63': 's',
					'\u1e69': 's',
					'\u0219': 's',
					'\u015f': 's',
					'\u023f': 's',
					'\ua7a9': 's',
					'\ua785': 's',
					'\u1e9b': 's',
					'\u24e3': 't',
					'\uff54': 't',
					'\u1e6b': 't',
					'\u1e97': 't',
					'\u0165': 't',
					'\u1e6d': 't',
					'\u021b': 't',
					'\u0163': 't',
					'\u1e71': 't',
					'\u1e6f': 't',
					'\u0167': 't',
					'\u01ad': 't',
					'\u0288': 't',
					'\u2c66': 't',
					'\ua787': 't',
					'\ua729': 'tz',
					'\u24e4': 'u',
					'\uff55': 'u',
					'\xf9': 'u',
					'\xfa': 'u',
					'\xfb': 'u',
					'\u0169': 'u',
					'\u1e79': 'u',
					'\u016b': 'u',
					'\u1e7b': 'u',
					'\u016d': 'u',
					'\xfc': 'u',
					'\u01dc': 'u',
					'\u01d8': 'u',
					'\u01d6': 'u',
					'\u01da': 'u',
					'\u1ee7': 'u',
					'\u016f': 'u',
					'\u0171': 'u',
					'\u01d4': 'u',
					'\u0215': 'u',
					'\u0217': 'u',
					'\u01b0': 'u',
					'\u1eeb': 'u',
					'\u1ee9': 'u',
					'\u1eef': 'u',
					'\u1eed': 'u',
					'\u1ef1': 'u',
					'\u1ee5': 'u',
					'\u1e73': 'u',
					'\u0173': 'u',
					'\u1e77': 'u',
					'\u1e75': 'u',
					'\u0289': 'u',
					'\u24e5': 'v',
					'\uff56': 'v',
					'\u1e7d': 'v',
					'\u1e7f': 'v',
					'\u028b': 'v',
					'\ua75f': 'v',
					'\u028c': 'v',
					'\ua761': 'vy',
					'\u24e6': 'w',
					'\uff57': 'w',
					'\u1e81': 'w',
					'\u1e83': 'w',
					'\u0175': 'w',
					'\u1e87': 'w',
					'\u1e85': 'w',
					'\u1e98': 'w',
					'\u1e89': 'w',
					'\u2c73': 'w',
					'\u24e7': 'x',
					'\uff58': 'x',
					'\u1e8b': 'x',
					'\u1e8d': 'x',
					'\u24e8': 'y',
					'\uff59': 'y',
					'\u1ef3': 'y',
					'\xfd': 'y',
					'\u0177': 'y',
					'\u1ef9': 'y',
					'\u0233': 'y',
					'\u1e8f': 'y',
					'\xff': 'y',
					'\u1ef7': 'y',
					'\u1e99': 'y',
					'\u1ef5': 'y',
					'\u01b4': 'y',
					'\u024f': 'y',
					'\u1eff': 'y',
					'\u24e9': 'z',
					'\uff5a': 'z',
					'\u017a': 'z',
					'\u1e91': 'z',
					'\u017c': 'z',
					'\u017e': 'z',
					'\u1e93': 'z',
					'\u1e95': 'z',
					'\u01b6': 'z',
					'\u0225': 'z',
					'\u0240': 'z',
					'\u2c6c': 'z',
					'\ua763': 'z',
					'\u0386': '\u0391',
					'\u0388': '\u0395',
					'\u0389': '\u0397',
					'\u038a': '\u0399',
					'\u03aa': '\u0399',
					'\u038c': '\u039f',
					'\u038e': '\u03a5',
					'\u03ab': '\u03a5',
					'\u038f': '\u03a9',
					'\u03ac': '\u03b1',
					'\u03ad': '\u03b5',
					'\u03ae': '\u03b7',
					'\u03af': '\u03b9',
					'\u03ca': '\u03b9',
					'\u0390': '\u03b9',
					'\u03cc': '\u03bf',
					'\u03cd': '\u03c5',
					'\u03cb': '\u03c5',
					'\u03b0': '\u03c5',
					'\u03c9': '\u03c9',
					'\u03c2': '\u03c3',
				};
			( i = a( document ) ),
				( f = ( function () {
					var a = 1;
					return function () {
						return a++;
					};
				} )() ),
				( c = O( Object, {
					bind: function ( a ) {
						var b = this;
						return function () {
							a.apply( b, arguments );
						};
					},
					init: function ( c ) {
						var d,
							e,
							g = '.select2-results';
						( this.opts = c = this.prepareOpts( c ) ),
							( this.id = c.id ),
							c.element.data( 'select2' ) !== b &&
								null !== c.element.data( 'select2' ) &&
								c.element.data( 'select2' ).destroy(),
							( this.container = this.createContainer() ),
							( this.liveRegion = a(
								'.select2-hidden-accessible'
							) ),
							0 == this.liveRegion.length &&
								( this.liveRegion = a( '<span>', {
									role: 'status',
									'aria-live': 'polite',
								} )
									.addClass( 'select2-hidden-accessible' )
									.appendTo( document.body ) ),
							( this.containerId =
								's2id_' +
								( c.element.attr( 'id' ) || 'autogen' + f() ) ),
							( this.containerEventName = this.containerId
								.replace( /([.])/g, '_' )
								.replace(
									/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,
									'\\$1'
								) ),
							this.container.attr( 'id', this.containerId ),
							this.container.attr(
								'title',
								c.element.attr( 'title' )
							),
							( this.body = a( document.body ) ),
							D(
								this.container,
								this.opts.element,
								this.opts.adaptContainerCssClass
							),
							this.container.attr(
								'style',
								c.element.attr( 'style' )
							),
							this.container.css(
								K( c.containerCss, this.opts.element )
							),
							this.container.addClass(
								K( c.containerCssClass, this.opts.element )
							),
							( this.elementTabIndex = this.opts.element.attr(
								'tabindex'
							) ),
							this.opts.element
								.data( 'select2', this )
								.attr( 'tabindex', '-1' )
								.before( this.container )
								.on( 'click.select2', A ),
							this.container.data( 'select2', this ),
							( this.dropdown = this.container.find(
								'.select2-drop'
							) ),
							D(
								this.dropdown,
								this.opts.element,
								this.opts.adaptDropdownCssClass
							),
							this.dropdown.addClass(
								K( c.dropdownCssClass, this.opts.element )
							),
							this.dropdown.data( 'select2', this ),
							this.dropdown.on( 'click', A ),
							( this.results = d = this.container.find( g ) ),
							( this.search = e = this.container.find(
								'input.select2-input'
							) ),
							( this.queryCount = 0 ),
							( this.resultsPage = 0 ),
							( this.context = null ),
							this.initContainer(),
							this.container.on( 'click', A ),
							v( this.results ),
							this.dropdown.on(
								'mousemove-filtered',
								g,
								this.bind( this.highlightUnderEvent )
							),
							this.dropdown.on(
								'touchstart touchmove touchend',
								g,
								this.bind( function ( a ) {
									( this._touchEvent = ! 0 ),
										this.highlightUnderEvent( a );
								} )
							),
							this.dropdown.on(
								'touchmove',
								g,
								this.bind( this.touchMoved )
							),
							this.dropdown.on(
								'touchstart touchend',
								g,
								this.bind( this.clearTouchMoved )
							),
							this.dropdown.on(
								'click',
								this.bind( function () {
									this._touchEvent &&
										( ( this._touchEvent = ! 1 ),
										this.selectHighlighted() );
								} )
							),
							x( 80, this.results ),
							this.dropdown.on(
								'scroll-debounced',
								g,
								this.bind( this.loadMoreIfNeeded )
							),
							a( this.container ).on(
								'change',
								'.select2-input',
								function ( a ) {
									a.stopPropagation();
								}
							),
							a( this.dropdown ).on(
								'change',
								'.select2-input',
								function ( a ) {
									a.stopPropagation();
								}
							),
							a.fn.mousewheel &&
								d.mousewheel( function ( a, b, c, e ) {
									var f = d.scrollTop();
									e > 0 && 0 >= f - e
										? ( d.scrollTop( 0 ), A( a ) )
										: 0 > e &&
										  d.get( 0 ).scrollHeight -
												d.scrollTop() +
												e <=
												d.height() &&
										  ( d.scrollTop(
												d.get( 0 ).scrollHeight -
													d.height()
										  ),
										  A( a ) );
								} ),
							u( e ),
							e.on(
								'keyup-change input paste',
								this.bind( this.updateResults )
							),
							e.on( 'focus', function () {
								e.addClass( 'select2-focused' );
							} ),
							e.on( 'blur', function () {
								e.removeClass( 'select2-focused' );
							} ),
							this.dropdown.on(
								'mouseup',
								g,
								this.bind( function ( b ) {
									a( b.target ).closest(
										'.select2-result-selectable'
									).length > 0 &&
										( this.highlightUnderEvent( b ),
										this.selectHighlighted( b ) );
								} )
							),
							this.dropdown.on(
								'click mouseup mousedown touchstart touchend focusin',
								function ( a ) {
									a.stopPropagation();
								}
							),
							( this.nextSearchTerm = b ),
							a.isFunction( this.opts.initSelection ) &&
								( this.initSelection(), this.monitorSource() ),
							null !== c.maximumInputLength &&
								this.search.attr(
									'maxlength',
									c.maximumInputLength
								);
						var h = c.element.prop( 'disabled' );
						h === b && ( h = ! 1 ), this.enable( ! h );
						var i = c.element.prop( 'readonly' );
						i === b && ( i = ! 1 ),
							this.readonly( i ),
							( j = j || q() ),
							( this.autofocus = c.element.prop( 'autofocus' ) ),
							c.element.prop( 'autofocus', ! 1 ),
							this.autofocus && this.focus(),
							this.search.attr(
								'placeholder',
								c.searchInputPlaceholder
							);
					},
					destroy: function () {
						var a = this.opts.element,
							c = a.data( 'select2' ),
							d = this;
						this.close(),
							a.length &&
								a[ 0 ].detachEvent &&
								d._sync &&
								a.each( function () {
									d._sync &&
										this.detachEvent(
											'onpropertychange',
											d._sync
										);
								} ),
							this.propertyObserver &&
								( this.propertyObserver.disconnect(),
								( this.propertyObserver = null ) ),
							( this._sync = null ),
							c !== b &&
								( c.container.remove(),
								c.liveRegion.remove(),
								c.dropdown.remove(),
								a
									.show()
									.removeData( 'select2' )
									.off( '.select2' )
									.prop( 'autofocus', this.autofocus || ! 1 ),
								this.elementTabIndex
									? a.attr( {
											tabindex: this.elementTabIndex,
									  } )
									: a.removeAttr( 'tabindex' ),
								a.show() ),
							N.call(
								this,
								'container',
								'liveRegion',
								'dropdown',
								'results',
								'search'
							);
					},
					optionToData: function ( a ) {
						return a.is( 'option' )
							? {
									id: a.prop( 'value' ),
									text: a.text(),
									element: a.get(),
									css: a.attr( 'class' ),
									disabled: a.prop( 'disabled' ),
									locked:
										r( a.attr( 'locked' ), 'locked' ) ||
										r( a.data( 'locked' ), ! 0 ),
							  }
							: a.is( 'optgroup' )
							? {
									text: a.attr( 'label' ),
									children: [],
									element: a.get(),
									css: a.attr( 'class' ),
							  }
							: void 0;
					},
					prepareOpts: function ( c ) {
						var d,
							e,
							g,
							h,
							i = this;
						if (
							( ( d = c.element ),
							'select' === d.get( 0 ).tagName.toLowerCase() &&
								( this.select = e = c.element ),
							e &&
								a.each(
									[
										'id',
										'multiple',
										'ajax',
										'query',
										'createSearchChoice',
										'initSelection',
										'data',
										'tags',
									],
									function () {
										if ( this in c )
											throw new Error(
												"Option '" +
													this +
													"' is not allowed for Select2 when attached to a <select> element."
											);
									}
								),
							( c = a.extend(
								{},
								{
									populateResults: function ( d, e, g ) {
										var h,
											j = this.opts.id,
											k = this.liveRegion;
										( h = function ( d, e, l ) {
											var m, n, o, p, q, r, s, t, u, v;
											d = c.sortResults( d, e, g );
											var w = [];
											for (
												m = 0, n = d.length;
												n > m;
												m += 1
											)
												( o = d[ m ] ),
													( q = o.disabled === ! 0 ),
													( p = ! q && j( o ) !== b ),
													( r =
														o.children &&
														o.children.length > 0 ),
													( s = a( '<li></li>' ) ),
													s.addClass(
														'select2-results-dept-' +
															l
													),
													s.addClass(
														'select2-result'
													),
													s.addClass(
														p
															? 'select2-result-selectable'
															: 'select2-result-unselectable'
													),
													q &&
														s.addClass(
															'select2-disabled'
														),
													r &&
														s.addClass(
															'select2-result-with-children'
														),
													s.addClass(
														i.opts.formatResultCssClass(
															o
														)
													),
													s.attr(
														'role',
														'presentation'
													),
													( t = a(
														document.createElement(
															'div'
														)
													) ),
													t.addClass(
														'select2-result-label'
													),
													t.attr(
														'id',
														'select2-result-label-' +
															f()
													),
													t.attr( 'role', 'option' ),
													( v = c.formatResult(
														o,
														t,
														g,
														i.opts.escapeMarkup
													) ),
													v !== b &&
														( t.html( v ),
														s.append( t ) ),
													r &&
														( ( u = a(
															'<ul></ul>'
														) ),
														u.addClass(
															'select2-result-sub'
														),
														h(
															o.children,
															u,
															l + 1
														),
														s.append( u ) ),
													s.data( 'select2-data', o ),
													w.push( s[ 0 ] );
											e.append( w ),
												k.text(
													c.formatMatches( d.length )
												);
										} ),
											h( e, d, 0 );
									},
								},
								a.fn.select2.defaults,
								c
							) ),
							'function' != typeof c.id &&
								( ( g = c.id ),
								( c.id = function ( a ) {
									return a[ g ];
								} ) ),
							a.isArray( c.element.data( 'select2Tags' ) ) )
						) {
							if ( 'tags' in c )
								throw (
									"tags specified as both an attribute 'data-select2-tags' and in options of Select2 " +
									c.element.attr( 'id' )
								);
							c.tags = c.element.data( 'select2Tags' );
						}
						if (
							( e
								? ( ( c.query = this.bind( function ( a ) {
										var f,
											g,
											h,
											c = { results: [], more: ! 1 },
											e = a.term;
										( h = function ( b, c ) {
											var d;
											b.is( 'option' )
												? a.matcher( e, b.text(), b ) &&
												  c.push( i.optionToData( b ) )
												: b.is( 'optgroup' ) &&
												  ( ( d = i.optionToData( b ) ),
												  b
														.children()
														.each2( function (
															a,
															b
														) {
															h( b, d.children );
														} ),
												  d.children.length > 0 &&
														c.push( d ) );
										} ),
											( f = d.children() ),
											this.getPlaceholder() !== b &&
												f.length > 0 &&
												( ( g = this.getPlaceholderOption() ),
												g && ( f = f.not( g ) ) ),
											f.each2( function ( a, b ) {
												h( b, c.results );
											} ),
											a.callback( c );
								  } ) ),
								  ( c.id = function ( a ) {
										return a.id;
								  } ) )
								: 'query' in c ||
								  ( 'ajax' in c
										? ( ( h = c.element.data(
												'ajax-url'
										  ) ),
										  h &&
												h.length > 0 &&
												( c.ajax.url = h ),
										  ( c.query = G.call(
												c.element,
												c.ajax
										  ) ) )
										: 'data' in c
										? ( c.query = H( c.data ) )
										: 'tags' in c &&
										  ( ( c.query = I( c.tags ) ),
										  c.createSearchChoice === b &&
												( c.createSearchChoice = function (
													b
												) {
													return {
														id: a.trim( b ),
														text: a.trim( b ),
													};
												} ),
										  c.initSelection === b &&
												( c.initSelection = function (
													b,
													d
												) {
													var e = [];
													a(
														s(
															b.val(),
															c.separator,
															c.transformVal
														)
													).each( function () {
														var b = {
																id: this,
																text: this,
															},
															d = c.tags;
														a.isFunction( d ) &&
															( d = d() ),
															a( d ).each(
																function () {
																	return r(
																		this.id,
																		b.id
																	)
																		? ( ( b = this ),
																		  ! 1 )
																		: void 0;
																}
															),
															e.push( b );
													} ),
														d( e );
												} ) ) ),
							'function' != typeof c.query )
						)
							throw (
								'query function not defined for Select2 ' +
								c.element.attr( 'id' )
							);
						if ( 'top' === c.createSearchChoicePosition )
							c.createSearchChoicePosition = function ( a, b ) {
								a.unshift( b );
							};
						else if ( 'bottom' === c.createSearchChoicePosition )
							c.createSearchChoicePosition = function ( a, b ) {
								a.push( b );
							};
						else if (
							'function' != typeof c.createSearchChoicePosition
						)
							throw "invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";
						return c;
					},
					monitorSource: function () {
						var d,
							c = this.opts.element,
							e = this;
						c.on(
							'change.select2',
							this.bind( function () {
								this.opts.element.data(
									'select2-change-triggered'
								) !== ! 0 && this.initSelection();
							} )
						),
							( this._sync = this.bind( function () {
								var a = c.prop( 'disabled' );
								a === b && ( a = ! 1 ), this.enable( ! a );
								var d = c.prop( 'readonly' );
								d === b && ( d = ! 1 ),
									this.readonly( d ),
									this.container &&
										( D(
											this.container,
											this.opts.element,
											this.opts.adaptContainerCssClass
										),
										this.container.addClass(
											K(
												this.opts.containerCssClass,
												this.opts.element
											)
										) ),
									this.dropdown &&
										( D(
											this.dropdown,
											this.opts.element,
											this.opts.adaptDropdownCssClass
										),
										this.dropdown.addClass(
											K(
												this.opts.dropdownCssClass,
												this.opts.element
											)
										) );
							} ) ),
							c.length &&
								c[ 0 ].attachEvent &&
								c.each( function () {
									this.attachEvent(
										'onpropertychange',
										e._sync
									);
								} ),
							( d =
								window.MutationObserver ||
								window.WebKitMutationObserver ||
								window.MozMutationObserver ),
							d !== b &&
								( this.propertyObserver &&
									( delete this.propertyObserver,
									( this.propertyObserver = null ) ),
								( this.propertyObserver = new d( function (
									b
								) {
									a.each( b, e._sync );
								} ) ),
								this.propertyObserver.observe( c.get( 0 ), {
									attributes: ! 0,
									subtree: ! 1,
								} ) );
					},
					triggerSelect: function ( b ) {
						var c = a.Event( 'select2-selecting', {
							val: this.id( b ),
							object: b,
							choice: b,
						} );
						return (
							this.opts.element.trigger( c ),
							! c.isDefaultPrevented()
						);
					},
					triggerChange: function ( b ) {
						( b = b || {} ),
							( b = a.extend( {}, b, {
								type: 'change',
								val: this.val(),
							} ) ),
							this.opts.element.data(
								'select2-change-triggered',
								! 0
							),
							this.opts.element.trigger( b ),
							this.opts.element.data(
								'select2-change-triggered',
								! 1
							),
							this.opts.element.click(),
							this.opts.blurOnChange && this.opts.element.blur();
					},
					isInterfaceEnabled: function () {
						return this.enabledInterface === ! 0;
					},
					enableInterface: function () {
						var a = this._enabled && ! this._readonly,
							b = ! a;
						return a === this.enabledInterface
							? ! 1
							: ( this.container.toggleClass(
									'select2-container-disabled',
									b
							  ),
							  this.close(),
							  ( this.enabledInterface = a ),
							  ! 0 );
					},
					enable: function ( a ) {
						a === b && ( a = ! 0 ),
							this._enabled !== a &&
								( ( this._enabled = a ),
								this.opts.element.prop( 'disabled', ! a ),
								this.enableInterface() );
					},
					disable: function () {
						this.enable( ! 1 );
					},
					readonly: function ( a ) {
						a === b && ( a = ! 1 ),
							this._readonly !== a &&
								( ( this._readonly = a ),
								this.opts.element.prop( 'readonly', a ),
								this.enableInterface() );
					},
					opened: function () {
						return this.container
							? this.container.hasClass( 'select2-dropdown-open' )
							: ! 1;
					},
					positionDropdown: function () {
						var v,
							w,
							x,
							y,
							z,
							b = this.dropdown,
							c = this.container,
							d = c.offset(),
							e = c.outerHeight( ! 1 ),
							f = c.outerWidth( ! 1 ),
							g = b.outerHeight( ! 1 ),
							h = a( window ),
							i = h.width(),
							k = h.height(),
							l = h.scrollLeft() + i,
							m = h.scrollTop() + k,
							n = d.top + e,
							o = d.left,
							p = m >= n + g,
							q = d.top - g >= h.scrollTop(),
							r = b.outerWidth( ! 1 ),
							s = function () {
								return l >= o + r;
							},
							t = function () {
								return d.left + l + c.outerWidth( ! 1 ) > r;
							},
							u = b.hasClass( 'select2-drop-above' );
						u
							? ( ( w = ! 0 ),
							  ! q && p && ( ( x = ! 0 ), ( w = ! 1 ) ) )
							: ( ( w = ! 1 ),
							  ! p && q && ( ( x = ! 0 ), ( w = ! 0 ) ) ),
							x &&
								( b.hide(),
								( d = this.container.offset() ),
								( e = this.container.outerHeight( ! 1 ) ),
								( f = this.container.outerWidth( ! 1 ) ),
								( g = b.outerHeight( ! 1 ) ),
								( l = h.scrollLeft() + i ),
								( m = h.scrollTop() + k ),
								( n = d.top + e ),
								( o = d.left ),
								( r = b.outerWidth( ! 1 ) ),
								b.show(),
								this.focusSearch() ),
							this.opts.dropdownAutoWidth
								? ( ( z = a( '.select2-results', b )[ 0 ] ),
								  b.addClass( 'select2-drop-auto-width' ),
								  b.css( 'width', '' ),
								  ( r =
										b.outerWidth( ! 1 ) +
										( z.scrollHeight === z.clientHeight
											? 0
											: j.width ) ),
								  r > f ? ( f = r ) : ( r = f ),
								  ( g = b.outerHeight( ! 1 ) ) )
								: this.container.removeClass(
										'select2-drop-auto-width'
								  ),
							'static' !== this.body.css( 'position' ) &&
								( ( v = this.body.offset() ),
								( n -= v.top ),
								( o -= v.left ) ),
							! s() &&
								t() &&
								( o =
									d.left +
									this.container.outerWidth( ! 1 ) -
									r ),
							( y = { left: o, width: f } ),
							w
								? ( ( y.top = d.top - g ),
								  ( y.bottom = 'auto' ),
								  this.container.addClass(
										'select2-drop-above'
								  ),
								  b.addClass( 'select2-drop-above' ) )
								: ( ( y.top = n ),
								  ( y.bottom = 'auto' ),
								  this.container.removeClass(
										'select2-drop-above'
								  ),
								  b.removeClass( 'select2-drop-above' ) ),
							( y = a.extend(
								y,
								K( this.opts.dropdownCss, this.opts.element )
							) ),
							b.css( y );
					},
					shouldOpen: function () {
						var b;
						return this.opened()
							? ! 1
							: this._enabled === ! 1 || this._readonly === ! 0
							? ! 1
							: ( ( b = a.Event( 'select2-opening' ) ),
							  this.opts.element.trigger( b ),
							  ! b.isDefaultPrevented() );
					},
					clearDropdownAlignmentPreference: function () {
						this.container.removeClass( 'select2-drop-above' ),
							this.dropdown.removeClass( 'select2-drop-above' );
					},
					open: function () {
						return this.shouldOpen()
							? ( this.opening(),
							  i.on( 'mousemove.select2Event', function ( a ) {
									( h.x = a.pageX ), ( h.y = a.pageY );
							  } ),
							  ! 0 )
							: ! 1;
					},
					opening: function () {
						var f,
							b = this.containerEventName,
							c = 'scroll.' + b,
							d = 'resize.' + b,
							e = 'orientationchange.' + b;
						this.container
							.addClass( 'select2-dropdown-open' )
							.addClass( 'select2-container-active' ),
							this.clearDropdownAlignmentPreference(),
							this.dropdown[ 0 ] !==
								this.body.children().last()[ 0 ] &&
								this.dropdown.detach().appendTo( this.body ),
							( f = a( '#select2-drop-mask' ) ),
							0 === f.length &&
								( ( f = a( document.createElement( 'div' ) ) ),
								f
									.attr( 'id', 'select2-drop-mask' )
									.attr( 'class', 'select2-drop-mask' ),
								f.hide(),
								f.appendTo( this.body ),
								f.on(
									'mousedown touchstart click',
									function ( b ) {
										n( f );
										var d,
											c = a( '#select2-drop' );
										c.length > 0 &&
											( ( d = c.data( 'select2' ) ),
											d.opts.selectOnBlur &&
												d.selectHighlighted( {
													noFocus: ! 0,
												} ),
											d.close(),
											b.preventDefault(),
											b.stopPropagation() );
									}
								) ),
							this.dropdown.prev()[ 0 ] !== f[ 0 ] &&
								this.dropdown.before( f ),
							a( '#select2-drop' ).removeAttr( 'id' ),
							this.dropdown.attr( 'id', 'select2-drop' ),
							f.show(),
							this.positionDropdown(),
							this.dropdown.show(),
							this.positionDropdown(),
							this.dropdown.addClass( 'select2-drop-active' );
						var g = this;
						this.container
							.parents()
							.add( window )
							.each( function () {
								a( this ).on(
									d + ' ' + c + ' ' + e,
									function () {
										g.opened() && g.positionDropdown();
									}
								);
							} );
					},
					close: function () {
						if ( this.opened() ) {
							var b = this.containerEventName,
								c = 'scroll.' + b,
								d = 'resize.' + b,
								e = 'orientationchange.' + b;
							this.container
								.parents()
								.add( window )
								.each( function () {
									a( this ).off( c ).off( d ).off( e );
								} ),
								this.clearDropdownAlignmentPreference(),
								a( '#select2-drop-mask' ).hide(),
								this.dropdown.removeAttr( 'id' ),
								this.dropdown.hide(),
								this.container
									.removeClass( 'select2-dropdown-open' )
									.removeClass( 'select2-container-active' ),
								this.results.empty(),
								i.off( 'mousemove.select2Event' ),
								this.clearSearch(),
								this.search.removeClass( 'select2-active' ),
								this.opts.element.trigger(
									a.Event( 'select2-close' )
								);
						}
					},
					externalSearch: function ( a ) {
						this.open(),
							this.search.val( a ),
							this.updateResults( ! 1 );
					},
					clearSearch: function () {},
					getMaximumSelectionSize: function () {
						return K(
							this.opts.maximumSelectionSize,
							this.opts.element
						);
					},
					ensureHighlightVisible: function () {
						var c,
							d,
							e,
							f,
							g,
							h,
							i,
							j,
							b = this.results;
						if ( ( ( d = this.highlight() ), ! ( 0 > d ) ) ) {
							if ( 0 == d ) return b.scrollTop( 0 ), void 0;
							( c = this.findHighlightableChoices().find(
								'.select2-result-label'
							) ),
								( e = a( c[ d ] ) ),
								( j = ( e.offset() || {} ).top || 0 ),
								( f = j + e.outerHeight( ! 0 ) ),
								d === c.length - 1 &&
									( ( i = b.find(
										'li.select2-more-results'
									) ),
									i.length > 0 &&
										( f =
											i.offset().top +
											i.outerHeight( ! 0 ) ) ),
								( g = b.offset().top + b.outerHeight( ! 1 ) ),
								f > g &&
									b.scrollTop( b.scrollTop() + ( f - g ) ),
								( h = j - b.offset().top ),
								0 > h &&
									'none' != e.css( 'display' ) &&
									b.scrollTop( b.scrollTop() + h );
						}
					},
					findHighlightableChoices: function () {
						return this.results.find(
							'.select2-result-selectable:not(.select2-disabled):not(.select2-selected)'
						);
					},
					moveHighlight: function ( b ) {
						for (
							var c = this.findHighlightableChoices(),
								d = this.highlight();
							d > -1 && d < c.length;

						) {
							d += b;
							var e = a( c[ d ] );
							if (
								e.hasClass( 'select2-result-selectable' ) &&
								! e.hasClass( 'select2-disabled' ) &&
								! e.hasClass( 'select2-selected' )
							) {
								this.highlight( d );
								break;
							}
						}
					},
					highlight: function ( b ) {
						var d,
							e,
							c = this.findHighlightableChoices();
						return 0 === arguments.length
							? p(
									c.filter( '.select2-highlighted' )[ 0 ],
									c.get()
							  )
							: ( b >= c.length && ( b = c.length - 1 ),
							  0 > b && ( b = 0 ),
							  this.removeHighlight(),
							  ( d = a( c[ b ] ) ),
							  d.addClass( 'select2-highlighted' ),
							  this.search.attr(
									'aria-activedescendant',
									d
										.find( '.select2-result-label' )
										.attr( 'id' )
							  ),
							  this.ensureHighlightVisible(),
							  this.liveRegion.text( d.text() ),
							  ( e = d.data( 'select2-data' ) ),
							  e &&
									this.opts.element.trigger( {
										type: 'select2-highlight',
										val: this.id( e ),
										choice: e,
									} ),
							  void 0 );
					},
					removeHighlight: function () {
						this.results
							.find( '.select2-highlighted' )
							.removeClass( 'select2-highlighted' );
					},
					touchMoved: function () {
						this._touchMoved = ! 0;
					},
					clearTouchMoved: function () {
						this._touchMoved = ! 1;
					},
					countSelectableResults: function () {
						return this.findHighlightableChoices().length;
					},
					highlightUnderEvent: function ( b ) {
						var c = a( b.target ).closest(
							'.select2-result-selectable'
						);
						if (
							c.length > 0 &&
							! c.is( '.select2-highlighted' )
						) {
							var d = this.findHighlightableChoices();
							this.highlight( d.index( c ) );
						} else 0 == c.length && this.removeHighlight();
					},
					loadMoreIfNeeded: function () {
						var c,
							a = this.results,
							b = a.find( 'li.select2-more-results' ),
							d = this.resultsPage + 1,
							e = this,
							f = this.search.val(),
							g = this.context;
						0 !== b.length &&
							( ( c =
								b.offset().top - a.offset().top - a.height() ),
							c <= this.opts.loadMorePadding &&
								( b.addClass( 'select2-active' ),
								this.opts.query( {
									element: this.opts.element,
									term: f,
									page: d,
									context: g,
									matcher: this.opts.matcher,
									callback: this.bind( function ( c ) {
										e.opened() &&
											( e.opts.populateResults.call(
												this,
												a,
												c.results,
												{ term: f, page: d, context: g }
											),
											e.postprocessResults( c, ! 1, ! 1 ),
											c.more === ! 0
												? ( b
														.detach()
														.appendTo( a )
														.html(
															e.opts.escapeMarkup(
																K(
																	e.opts
																		.formatLoadMore,
																	e.opts
																		.element,
																	d + 1
																)
															)
														),
												  window.setTimeout(
														function () {
															e.loadMoreIfNeeded();
														},
														10
												  ) )
												: b.remove(),
											e.positionDropdown(),
											( e.resultsPage = d ),
											( e.context = c.context ),
											this.opts.element.trigger( {
												type: 'select2-loaded',
												items: c,
											} ) );
									} ),
								} ) ) );
					},
					tokenize: function () {},
					updateResults: function ( c ) {
						function m() {
							d.removeClass( 'select2-active' ),
								h.positionDropdown(),
								e.find(
									'.select2-no-results,.select2-selection-limit,.select2-searching'
								).length
									? h.liveRegion.text( e.text() )
									: h.liveRegion.text(
											h.opts.formatMatches(
												e.find(
													'.select2-result-selectable:not(".select2-selected")'
												).length
											)
									  );
						}
						function n( a ) {
							e.html( a ), m();
						}
						var g,
							i,
							l,
							d = this.search,
							e = this.results,
							f = this.opts,
							h = this,
							j = d.val(),
							k = a.data( this.container, 'select2-last-term' );
						if (
							( c === ! 0 || ! k || ! r( j, k ) ) &&
							( a.data( this.container, 'select2-last-term', j ),
							c === ! 0 ||
								( this.showSearchInput !== ! 1 &&
									this.opened() ) )
						) {
							l = ++this.queryCount;
							var o = this.getMaximumSelectionSize();
							if (
								o >= 1 &&
								( ( g = this.data() ),
								a.isArray( g ) &&
									g.length >= o &&
									J(
										f.formatSelectionTooBig,
										'formatSelectionTooBig'
									) )
							)
								return (
									n(
										"<li class='select2-selection-limit'>" +
											K(
												f.formatSelectionTooBig,
												f.element,
												o
											) +
											'</li>'
									),
									void 0
								);
							if ( d.val().length < f.minimumInputLength )
								return (
									J(
										f.formatInputTooShort,
										'formatInputTooShort'
									)
										? n(
												"<li class='select2-no-results'>" +
													K(
														f.formatInputTooShort,
														f.element,
														d.val(),
														f.minimumInputLength
													) +
													'</li>'
										  )
										: n( '' ),
									c &&
										this.showSearch &&
										this.showSearch( ! 0 ),
									void 0
								);
							if (
								f.maximumInputLength &&
								d.val().length > f.maximumInputLength
							)
								return (
									J(
										f.formatInputTooLong,
										'formatInputTooLong'
									)
										? n(
												"<li class='select2-no-results'>" +
													K(
														f.formatInputTooLong,
														f.element,
														d.val(),
														f.maximumInputLength
													) +
													'</li>'
										  )
										: n( '' ),
									void 0
								);
							f.formatSearching &&
								0 === this.findHighlightableChoices().length &&
								n(
									"<li class='select2-searching'>" +
										K( f.formatSearching, f.element ) +
										'</li>'
								),
								d.addClass( 'select2-active' ),
								this.removeHighlight(),
								( i = this.tokenize() ),
								i != b && null != i && d.val( i ),
								( this.resultsPage = 1 ),
								f.query( {
									element: f.element,
									term: d.val(),
									page: this.resultsPage,
									context: null,
									matcher: f.matcher,
									callback: this.bind( function ( g ) {
										var i;
										if ( l == this.queryCount ) {
											if ( ! this.opened() )
												return (
													this.search.removeClass(
														'select2-active'
													),
													void 0
												);
											if (
												g.hasError !== b &&
												J(
													f.formatAjaxError,
													'formatAjaxError'
												)
											)
												return (
													n(
														"<li class='select2-ajax-error'>" +
															K(
																f.formatAjaxError,
																f.element,
																g.jqXHR,
																g.textStatus,
																g.errorThrown
															) +
															'</li>'
													),
													void 0
												);
											if (
												( ( this.context =
													g.context === b
														? null
														: g.context ),
												this.opts.createSearchChoice &&
													'' !== d.val() &&
													( ( i = this.opts.createSearchChoice.call(
														h,
														d.val(),
														g.results
													) ),
													i !== b &&
														null !== i &&
														h.id( i ) !== b &&
														null !== h.id( i ) &&
														0 ===
															a(
																g.results
															).filter(
																function () {
																	return r(
																		h.id(
																			this
																		),
																		h.id(
																			i
																		)
																	);
																}
															).length &&
														this.opts.createSearchChoicePosition(
															g.results,
															i
														) ),
												0 === g.results.length &&
													J(
														f.formatNoMatches,
														'formatNoMatches'
													) )
											)
												return (
													n(
														"<li class='select2-no-results'>" +
															K(
																f.formatNoMatches,
																f.element,
																d.val()
															) +
															'</li>'
													),
													void 0
												);
											e.empty(),
												h.opts.populateResults.call(
													this,
													e,
													g.results,
													{
														term: d.val(),
														page: this.resultsPage,
														context: null,
													}
												),
												g.more === ! 0 &&
													J(
														f.formatLoadMore,
														'formatLoadMore'
													) &&
													( e.append(
														"<li class='select2-more-results'>" +
															f.escapeMarkup(
																K(
																	f.formatLoadMore,
																	f.element,
																	this
																		.resultsPage
																)
															) +
															'</li>'
													),
													window.setTimeout(
														function () {
															h.loadMoreIfNeeded();
														},
														10
													) ),
												this.postprocessResults( g, c ),
												m(),
												this.opts.element.trigger( {
													type: 'select2-loaded',
													items: g,
												} );
										}
									} ),
								} );
						}
					},
					cancel: function () {
						this.close();
					},
					blur: function () {
						this.opts.selectOnBlur &&
							this.selectHighlighted( { noFocus: ! 0 } ),
							this.close(),
							this.container.removeClass(
								'select2-container-active'
							),
							this.search[ 0 ] === document.activeElement &&
								this.search.blur(),
							this.clearSearch(),
							this.selection
								.find( '.select2-search-choice-focus' )
								.removeClass( 'select2-search-choice-focus' );
					},
					focusSearch: function () {
						y( this.search );
					},
					selectHighlighted: function ( a ) {
						if ( this._touchMoved )
							return this.clearTouchMoved(), void 0;
						var b = this.highlight(),
							c = this.results.find( '.select2-highlighted' ),
							d = c
								.closest( '.select2-result' )
								.data( 'select2-data' );
						d
							? ( this.highlight( b ), this.onSelect( d, a ) )
							: a && a.noFocus && this.close();
					},
					getPlaceholder: function () {
						var a;
						return (
							this.opts.element.attr( 'placeholder' ) ||
							this.opts.element.attr( 'data-placeholder' ) ||
							this.opts.element.data( 'placeholder' ) ||
							this.opts.placeholder ||
							( ( a = this.getPlaceholderOption() ) !== b
								? a.text()
								: b )
						);
					},
					getPlaceholderOption: function () {
						if ( this.select ) {
							var c = this.select.children( 'option' ).first();
							if ( this.opts.placeholderOption !== b )
								return (
									( 'first' === this.opts.placeholderOption &&
										c ) ||
									( 'function' ==
										typeof this.opts.placeholderOption &&
										this.opts.placeholderOption(
											this.select
										) )
								);
							if ( '' === a.trim( c.text() ) && '' === c.val() )
								return c;
						}
					},
					initContainerWidth: function () {
						function c() {
							var c, d, e, f, g, h;
							if ( 'off' === this.opts.width ) return null;
							if ( 'element' === this.opts.width )
								return 0 === this.opts.element.outerWidth( ! 1 )
									? 'auto'
									: this.opts.element.outerWidth( ! 1 ) +
											'px';
							if (
								'copy' === this.opts.width ||
								'resolve' === this.opts.width
							) {
								if (
									( ( c = this.opts.element.attr( 'style' ) ),
									c !== b )
								)
									for (
										d = c.split( ';' ), f = 0, g = d.length;
										g > f;
										f += 1
									)
										if (
											( ( h = d[ f ].replace(
												/\s/g,
												''
											) ),
											( e = h.match(
												/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i
											) ),
											null !== e && e.length >= 1 )
										)
											return e[ 1 ];
								return 'resolve' === this.opts.width
									? ( ( c = this.opts.element.css(
											'width'
									  ) ),
									  c.indexOf( '%' ) > 0
											? c
											: 0 ===
											  this.opts.element.outerWidth(
													! 1
											  )
											? 'auto'
											: this.opts.element.outerWidth(
													! 1
											  ) + 'px' )
									: null;
							}
							return a.isFunction( this.opts.width )
								? this.opts.width()
								: this.opts.width;
						}
						var d = c.call( this );
						null !== d && this.container.css( 'width', d );
					},
				} ) ),
				( d = O( c, {
					createContainer: function () {
						var b = a( document.createElement( 'div' ) )
							.attr( { class: 'select2-container' } )
							.html(
								[
									"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>",
									"   <span class='select2-chosen'>&#160;</span><abbr class='select2-search-choice-close'></abbr>",
									"   <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>",
									'</a>',
									"<label for='' class='select2-offscreen'></label>",
									"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />",
									"<div class='select2-drop select2-display-none'>",
									"   <div class='select2-search'>",
									"       <label for='' class='select2-offscreen'></label>",
									"       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'",
									"       aria-autocomplete='list' />",
									'   </div>',
									"   <ul class='select2-results' role='listbox'>",
									'   </ul>',
									'</div>',
								].join( '' )
							);
						return b;
					},
					enableInterface: function () {
						this.parent.enableInterface.apply( this, arguments ) &&
							this.focusser.prop(
								'disabled',
								! this.isInterfaceEnabled()
							);
					},
					opening: function () {
						var c, d, e;
						this.opts.minimumResultsForSearch >= 0 &&
							this.showSearch( ! 0 ),
							this.parent.opening.apply( this, arguments ),
							this.showSearchInput !== ! 1 &&
								this.search.val( this.focusser.val() ),
							this.opts.shouldFocusInput( this ) &&
								( this.search.focus(),
								( c = this.search.get( 0 ) ),
								c.createTextRange
									? ( ( d = c.createTextRange() ),
									  d.collapse( ! 1 ),
									  d.select() )
									: c.setSelectionRange &&
									  ( ( e = this.search.val().length ),
									  c.setSelectionRange( e, e ) ) ),
							'' === this.search.val() &&
								this.nextSearchTerm != b &&
								( this.search.val( this.nextSearchTerm ),
								this.search.select() ),
							this.focusser.prop( 'disabled', ! 0 ).val( '' ),
							this.updateResults( ! 0 ),
							this.opts.element.trigger(
								a.Event( 'select2-open' )
							);
					},
					close: function () {
						this.opened() &&
							( this.parent.close.apply( this, arguments ),
							this.focusser.prop( 'disabled', ! 1 ),
							this.opts.shouldFocusInput( this ) &&
								this.focusser.focus() );
					},
					focus: function () {
						this.opened()
							? this.close()
							: ( this.focusser.prop( 'disabled', ! 1 ),
							  this.opts.shouldFocusInput( this ) &&
									this.focusser.focus() );
					},
					isFocused: function () {
						return this.container.hasClass(
							'select2-container-active'
						);
					},
					cancel: function () {
						this.parent.cancel.apply( this, arguments ),
							this.focusser.prop( 'disabled', ! 1 ),
							this.opts.shouldFocusInput( this ) &&
								this.focusser.focus();
					},
					destroy: function () {
						a(
							"label[for='" + this.focusser.attr( 'id' ) + "']"
						).attr( 'for', this.opts.element.attr( 'id' ) ),
							this.parent.destroy.apply( this, arguments ),
							N.call( this, 'selection', 'focusser' );
					},
					initContainer: function () {
						var b,
							g,
							c = this.container,
							d = this.dropdown,
							e = f();
						this.opts.minimumResultsForSearch < 0
							? this.showSearch( ! 1 )
							: this.showSearch( ! 0 ),
							( this.selection = b = c.find(
								'.select2-choice'
							) ),
							( this.focusser = c.find( '.select2-focusser' ) ),
							b
								.find( '.select2-chosen' )
								.attr( 'id', 'select2-chosen-' + e ),
							this.focusser.attr(
								'aria-labelledby',
								'select2-chosen-' + e
							),
							this.results.attr( 'id', 'select2-results-' + e ),
							this.search.attr(
								'aria-owns',
								'select2-results-' + e
							),
							this.focusser.attr( 'id', 's2id_autogen' + e ),
							( g = a(
								"label[for='" +
									this.opts.element.attr( 'id' ) +
									"']"
							) ),
							this.opts.element.focus(
								this.bind( function () {
									this.focus();
								} )
							),
							this.focusser
								.prev()
								.text( g.text() )
								.attr( 'for', this.focusser.attr( 'id' ) );
						var h = this.opts.element.attr( 'title' );
						this.opts.element.attr( 'title', h || g.text() ),
							this.focusser.attr(
								'tabindex',
								this.elementTabIndex
							),
							this.search.attr(
								'id',
								this.focusser.attr( 'id' ) + '_search'
							),
							this.search
								.prev()
								.text(
									a(
										"label[for='" +
											this.focusser.attr( 'id' ) +
											"']"
									).text()
								)
								.attr( 'for', this.search.attr( 'id' ) ),
							this.search.on(
								'keydown',
								this.bind( function ( a ) {
									if (
										this.isInterfaceEnabled() &&
										229 != a.keyCode
									) {
										if (
											a.which === k.PAGE_UP ||
											a.which === k.PAGE_DOWN
										)
											return A( a ), void 0;
										switch ( a.which ) {
											case k.UP:
											case k.DOWN:
												return (
													this.moveHighlight(
														a.which === k.UP
															? -1
															: 1
													),
													A( a ),
													void 0
												);
											case k.ENTER:
												return (
													this.selectHighlighted(),
													A( a ),
													void 0
												);
											case k.TAB:
												return (
													this.selectHighlighted( {
														noFocus: ! 0,
													} ),
													void 0
												);
											case k.ESC:
												return (
													this.cancel( a ),
													A( a ),
													void 0
												);
										}
									}
								} )
							),
							this.search.on(
								'blur',
								this.bind( function () {
									document.activeElement ===
										this.body.get( 0 ) &&
										window.setTimeout(
											this.bind( function () {
												this.opened() &&
													this.search.focus();
											} ),
											0
										);
								} )
							),
							this.focusser.on(
								'keydown',
								this.bind( function ( a ) {
									if (
										this.isInterfaceEnabled() &&
										a.which !== k.TAB &&
										! k.isControl( a ) &&
										! k.isFunctionKey( a ) &&
										a.which !== k.ESC
									) {
										if (
											this.opts.openOnEnter === ! 1 &&
											a.which === k.ENTER
										)
											return A( a ), void 0;
										if (
											a.which == k.DOWN ||
											a.which == k.UP ||
											( a.which == k.ENTER &&
												this.opts.openOnEnter )
										) {
											if (
												a.altKey ||
												a.ctrlKey ||
												a.shiftKey ||
												a.metaKey
											)
												return;
											return this.open(), A( a ), void 0;
										}
										return a.which == k.DELETE ||
											a.which == k.BACKSPACE
											? ( this.opts.allowClear &&
													this.clear(),
											  A( a ),
											  void 0 )
											: void 0;
									}
								} )
							),
							u( this.focusser ),
							this.focusser.on(
								'keyup-change input',
								this.bind( function ( a ) {
									if (
										this.opts.minimumResultsForSearch >= 0
									) {
										if (
											( a.stopPropagation(),
											this.opened() )
										)
											return;
										this.open();
									}
								} )
							),
							b.on(
								'mousedown touchstart',
								'abbr',
								this.bind( function ( a ) {
									this.isInterfaceEnabled() &&
										( this.clear(),
										B( a ),
										this.close(),
										this.selection &&
											this.selection.focus() );
								} )
							),
							b.on(
								'mousedown touchstart',
								this.bind( function ( c ) {
									n( b ),
										this.container.hasClass(
											'select2-container-active'
										) ||
											this.opts.element.trigger(
												a.Event( 'select2-focus' )
											),
										this.opened()
											? this.close()
											: this.isInterfaceEnabled() &&
											  this.open(),
										A( c );
								} )
							),
							d.on(
								'mousedown touchstart',
								this.bind( function () {
									this.opts.shouldFocusInput( this ) &&
										this.search.focus();
								} )
							),
							b.on(
								'focus',
								this.bind( function ( a ) {
									A( a );
								} )
							),
							this.focusser
								.on(
									'focus',
									this.bind( function () {
										this.container.hasClass(
											'select2-container-active'
										) ||
											this.opts.element.trigger(
												a.Event( 'select2-focus' )
											),
											this.container.addClass(
												'select2-container-active'
											);
									} )
								)
								.on(
									'blur',
									this.bind( function () {
										this.opened() ||
											( this.container.removeClass(
												'select2-container-active'
											),
											this.opts.element.trigger(
												a.Event( 'select2-blur' )
											) );
									} )
								),
							this.search.on(
								'focus',
								this.bind( function () {
									this.container.hasClass(
										'select2-container-active'
									) ||
										this.opts.element.trigger(
											a.Event( 'select2-focus' )
										),
										this.container.addClass(
											'select2-container-active'
										);
								} )
							),
							this.initContainerWidth(),
							this.opts.element.hide(),
							this.setPlaceholder();
					},
					clear: function ( b ) {
						var c = this.selection.data( 'select2-data' );
						if ( c ) {
							var d = a.Event( 'select2-clearing' );
							if (
								( this.opts.element.trigger( d ),
								d.isDefaultPrevented() )
							)
								return;
							var e = this.getPlaceholderOption();
							this.opts.element.val( e ? e.val() : '' ),
								this.selection
									.find( '.select2-chosen' )
									.empty(),
								this.selection.removeData( 'select2-data' ),
								this.setPlaceholder(),
								b !== ! 1 &&
									( this.opts.element.trigger( {
										type: 'select2-removed',
										val: this.id( c ),
										choice: c,
									} ),
									this.triggerChange( { removed: c } ) );
						}
					},
					initSelection: function () {
						if ( this.isPlaceholderOptionSelected() )
							this.updateSelection( null ),
								this.close(),
								this.setPlaceholder();
						else {
							var c = this;
							this.opts.initSelection.call(
								null,
								this.opts.element,
								function ( a ) {
									a !== b &&
										null !== a &&
										( c.updateSelection( a ),
										c.close(),
										c.setPlaceholder(),
										( c.nextSearchTerm = c.opts.nextSearchTerm(
											a,
											c.search.val()
										) ) );
								}
							);
						}
					},
					isPlaceholderOptionSelected: function () {
						var a;
						return this.getPlaceholder() === b
							? ! 1
							: ( ( a = this.getPlaceholderOption() ) !== b &&
									a.prop( 'selected' ) ) ||
									'' === this.opts.element.val() ||
									this.opts.element.val() === b ||
									null === this.opts.element.val();
					},
					prepareOpts: function () {
						var b = this.parent.prepareOpts.apply(
								this,
								arguments
							),
							c = this;
						return (
							'select' ===
							b.element.get( 0 ).tagName.toLowerCase()
								? ( b.initSelection = function ( a, b ) {
										var d = a
											.find( 'option' )
											.filter( function () {
												return (
													this.selected &&
													! this.disabled
												);
											} );
										b( c.optionToData( d ) );
								  } )
								: 'data' in b &&
								  ( b.initSelection =
										b.initSelection ||
										function ( c, d ) {
											var e = c.val(),
												f = null;
											b.query( {
												matcher: function ( a, c, d ) {
													var g = r( e, b.id( d ) );
													return g && ( f = d ), g;
												},
												callback: a.isFunction( d )
													? function () {
															d( f );
													  }
													: a.noop,
											} );
										} ),
							b
						);
					},
					getPlaceholder: function () {
						return this.select && this.getPlaceholderOption() === b
							? b
							: this.parent.getPlaceholder.apply(
									this,
									arguments
							  );
					},
					setPlaceholder: function () {
						var a = this.getPlaceholder();
						if ( this.isPlaceholderOptionSelected() && a !== b ) {
							if (
								this.select &&
								this.getPlaceholderOption() === b
							)
								return;
							this.selection
								.find( '.select2-chosen' )
								.html( this.opts.escapeMarkup( a ) ),
								this.selection.addClass( 'select2-default' ),
								this.container.removeClass(
									'select2-allowclear'
								);
						}
					},
					postprocessResults: function ( a, b, c ) {
						var d = 0,
							e = this;
						if (
							( this.findHighlightableChoices().each2( function (
								a,
								b
							) {
								return r(
									e.id( b.data( 'select2-data' ) ),
									e.opts.element.val()
								)
									? ( ( d = a ), ! 1 )
									: void 0;
							} ),
							c !== ! 1 &&
								( b === ! 0 && d >= 0
									? this.highlight( d )
									: this.highlight( 0 ) ),
							b === ! 0 )
						) {
							var g = this.opts.minimumResultsForSearch;
							g >= 0 && this.showSearch( L( a.results ) >= g );
						}
					},
					showSearch: function ( b ) {
						this.showSearchInput !== b &&
							( ( this.showSearchInput = b ),
							this.dropdown
								.find( '.select2-search' )
								.toggleClass( 'select2-search-hidden', ! b ),
							this.dropdown
								.find( '.select2-search' )
								.toggleClass( 'select2-offscreen', ! b ),
							a( this.dropdown, this.container ).toggleClass(
								'select2-with-searchbox',
								b
							) );
					},
					onSelect: function ( a, b ) {
						if ( this.triggerSelect( a ) ) {
							var c = this.opts.element.val(),
								d = this.data();
							this.opts.element.val( this.id( a ) ),
								this.updateSelection( a ),
								this.opts.element.trigger( {
									type: 'select2-selected',
									val: this.id( a ),
									choice: a,
								} ),
								( this.nextSearchTerm = this.opts.nextSearchTerm(
									a,
									this.search.val()
								) ),
								this.close(),
								( b && b.noFocus ) ||
									! this.opts.shouldFocusInput( this ) ||
									this.focusser.focus(),
								r( c, this.id( a ) ) ||
									this.triggerChange( {
										added: a,
										removed: d,
									} );
						}
					},
					updateSelection: function ( a ) {
						var d,
							e,
							c = this.selection.find( '.select2-chosen' );
						this.selection.data( 'select2-data', a ),
							c.empty(),
							null !== a &&
								( d = this.opts.formatSelection(
									a,
									c,
									this.opts.escapeMarkup
								) ),
							d !== b && c.append( d ),
							( e = this.opts.formatSelectionCssClass( a, c ) ),
							e !== b && c.addClass( e ),
							this.selection.removeClass( 'select2-default' ),
							this.opts.allowClear &&
								this.getPlaceholder() !== b &&
								this.container.addClass( 'select2-allowclear' );
					},
					val: function () {
						var a,
							c = ! 1,
							d = null,
							e = this,
							f = this.data();
						if ( 0 === arguments.length )
							return this.opts.element.val();
						if (
							( ( a = arguments[ 0 ] ),
							arguments.length > 1 && ( c = arguments[ 1 ] ),
							this.select )
						)
							this.select
								.val( a )
								.find( 'option' )
								.filter( function () {
									return this.selected;
								} )
								.each2( function ( a, b ) {
									return ( d = e.optionToData( b ) ), ! 1;
								} ),
								this.updateSelection( d ),
								this.setPlaceholder(),
								c &&
									this.triggerChange( {
										added: d,
										removed: f,
									} );
						else {
							if ( ! a && 0 !== a )
								return this.clear( c ), void 0;
							if ( this.opts.initSelection === b )
								throw new Error(
									'cannot call val() if initSelection() is not defined'
								);
							this.opts.element.val( a ),
								this.opts.initSelection(
									this.opts.element,
									function ( a ) {
										e.opts.element.val(
											a ? e.id( a ) : ''
										),
											e.updateSelection( a ),
											e.setPlaceholder(),
											c &&
												e.triggerChange( {
													added: a,
													removed: f,
												} );
									}
								);
						}
					},
					clearSearch: function () {
						this.search.val( '' ), this.focusser.val( '' );
					},
					data: function ( a ) {
						var c,
							d = ! 1;
						return 0 === arguments.length
							? ( ( c = this.selection.data( 'select2-data' ) ),
							  c == b && ( c = null ),
							  c )
							: ( arguments.length > 1 && ( d = arguments[ 1 ] ),
							  a
									? ( ( c = this.data() ),
									  this.opts.element.val(
											a ? this.id( a ) : ''
									  ),
									  this.updateSelection( a ),
									  d &&
											this.triggerChange( {
												added: a,
												removed: c,
											} ) )
									: this.clear( d ),
							  void 0 );
					},
				} ) ),
				( e = O( c, {
					createContainer: function () {
						var b = a( document.createElement( 'div' ) )
							.attr( {
								class:
									'select2-container select2-container-multi',
							} )
							.html(
								[
									"<ul class='select2-choices'>",
									"  <li class='select2-search-field'>",
									"    <label for='' class='select2-offscreen'></label>",
									"    <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>",
									'  </li>',
									'</ul>',
									"<div class='select2-drop select2-drop-multi select2-display-none'>",
									"   <ul class='select2-results'>",
									'   </ul>',
									'</div>',
								].join( '' )
							);
						return b;
					},
					prepareOpts: function () {
						var b = this.parent.prepareOpts.apply(
								this,
								arguments
							),
							c = this;
						return (
							'select' ===
							b.element.get( 0 ).tagName.toLowerCase()
								? ( b.initSelection = function ( a, b ) {
										var d = [];
										a
											.find( 'option' )
											.filter( function () {
												return (
													this.selected &&
													! this.disabled
												);
											} )
											.each2( function ( a, b ) {
												d.push( c.optionToData( b ) );
											} ),
											b( d );
								  } )
								: 'data' in b &&
								  ( b.initSelection =
										b.initSelection ||
										function ( c, d ) {
											var e = s(
													c.val(),
													b.separator,
													b.transformVal
												),
												f = [];
											b.query( {
												matcher: function ( c, d, g ) {
													var h = a.grep(
														e,
														function ( a ) {
															return r(
																a,
																b.id( g )
															);
														}
													).length;
													return h && f.push( g ), h;
												},
												callback: a.isFunction( d )
													? function () {
															for (
																var a = [],
																	c = 0;
																c < e.length;
																c++
															)
																for (
																	var g =
																			e[
																				c
																			],
																		h = 0;
																	h <
																	f.length;
																	h++
																) {
																	var i =
																		f[ h ];
																	if (
																		r(
																			g,
																			b.id(
																				i
																			)
																		)
																	) {
																		a.push(
																			i
																		),
																			f.splice(
																				h,
																				1
																			);
																		break;
																	}
																}
															d( a );
													  }
													: a.noop,
											} );
										} ),
							b
						);
					},
					selectChoice: function ( a ) {
						var b = this.container.find(
							'.select2-search-choice-focus'
						);
						( b.length && a && a[ 0 ] == b[ 0 ] ) ||
							( b.length &&
								this.opts.element.trigger(
									'choice-deselected',
									b
								),
							b.removeClass( 'select2-search-choice-focus' ),
							a &&
								a.length &&
								( this.close(),
								a.addClass( 'select2-search-choice-focus' ),
								this.opts.element.trigger(
									'choice-selected',
									a
								) ) );
					},
					destroy: function () {
						a(
							"label[for='" + this.search.attr( 'id' ) + "']"
						).attr( 'for', this.opts.element.attr( 'id' ) ),
							this.parent.destroy.apply( this, arguments ),
							N.call( this, 'searchContainer', 'selection' );
					},
					initContainer: function () {
						var c,
							b = '.select2-choices';
						( this.searchContainer = this.container.find(
							'.select2-search-field'
						) ),
							( this.selection = c = this.container.find( b ) );
						var d = this;
						this.selection.on(
							'click',
							'.select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)',
							function () {
								d.search[ 0 ].focus(),
									d.selectChoice( a( this ) );
							}
						),
							this.search.attr( 'id', 's2id_autogen' + f() ),
							this.search
								.prev()
								.text(
									a(
										"label[for='" +
											this.opts.element.attr( 'id' ) +
											"']"
									).text()
								)
								.attr( 'for', this.search.attr( 'id' ) ),
							this.opts.element.focus(
								this.bind( function () {
									this.focus();
								} )
							),
							this.search.on(
								'input paste',
								this.bind( function () {
									( this.search.attr( 'placeholder' ) &&
										0 == this.search.val().length ) ||
										( this.isInterfaceEnabled() &&
											( this.opened() || this.open() ) );
								} )
							),
							this.search.attr(
								'tabindex',
								this.elementTabIndex
							),
							( this.keydowns = 0 ),
							this.search.on(
								'keydown',
								this.bind( function ( a ) {
									if ( this.isInterfaceEnabled() ) {
										++this.keydowns;
										var b = c.find(
												'.select2-search-choice-focus'
											),
											d = b.prev(
												'.select2-search-choice:not(.select2-locked)'
											),
											e = b.next(
												'.select2-search-choice:not(.select2-locked)'
											),
											f = z( this.search );
										if (
											b.length &&
											( a.which == k.LEFT ||
												a.which == k.RIGHT ||
												a.which == k.BACKSPACE ||
												a.which == k.DELETE ||
												a.which == k.ENTER )
										) {
											var g = b;
											return (
												a.which == k.LEFT && d.length
													? ( g = d )
													: a.which == k.RIGHT
													? ( g = e.length
															? e
															: null )
													: a.which === k.BACKSPACE
													? this.unselect(
															b.first()
													  ) &&
													  ( this.search.width( 10 ),
													  ( g = d.length ? d : e ) )
													: a.which == k.DELETE
													? this.unselect(
															b.first()
													  ) &&
													  ( this.search.width( 10 ),
													  ( g = e.length
															? e
															: null ) )
													: a.which == k.ENTER &&
													  ( g = null ),
												this.selectChoice( g ),
												A( a ),
												( g && g.length ) ||
													this.open(),
												void 0
											);
										}
										if (
											( ( a.which === k.BACKSPACE &&
												1 == this.keydowns ) ||
												a.which == k.LEFT ) &&
											0 == f.offset &&
											! f.length
										)
											return (
												this.selectChoice(
													c
														.find(
															'.select2-search-choice:not(.select2-locked)'
														)
														.last()
												),
												A( a ),
												void 0
											);
										if (
											( this.selectChoice( null ),
											this.opened() )
										)
											switch ( a.which ) {
												case k.UP:
												case k.DOWN:
													return (
														this.moveHighlight(
															a.which === k.UP
																? -1
																: 1
														),
														A( a ),
														void 0
													);
												case k.ENTER:
													return (
														this.selectHighlighted(),
														A( a ),
														void 0
													);
												case k.TAB:
													return (
														this.selectHighlighted(
															{ noFocus: ! 0 }
														),
														this.close(),
														void 0
													);
												case k.ESC:
													return (
														this.cancel( a ),
														A( a ),
														void 0
													);
											}
										if (
											a.which !== k.TAB &&
											! k.isControl( a ) &&
											! k.isFunctionKey( a ) &&
											a.which !== k.BACKSPACE &&
											a.which !== k.ESC
										) {
											if ( a.which === k.ENTER ) {
												if (
													this.opts.openOnEnter ===
													! 1
												)
													return;
												if (
													a.altKey ||
													a.ctrlKey ||
													a.shiftKey ||
													a.metaKey
												)
													return;
											}
											this.open(),
												( a.which === k.PAGE_UP ||
													a.which === k.PAGE_DOWN ) &&
													A( a ),
												a.which === k.ENTER && A( a );
										}
									}
								} )
							),
							this.search.on(
								'keyup',
								this.bind( function () {
									( this.keydowns = 0 ), this.resizeSearch();
								} )
							),
							this.search.on(
								'blur',
								this.bind( function ( b ) {
									this.container.removeClass(
										'select2-container-active'
									),
										this.search.removeClass(
											'select2-focused'
										),
										this.selectChoice( null ),
										this.opened() || this.clearSearch(),
										b.stopImmediatePropagation(),
										this.opts.element.trigger(
											a.Event( 'select2-blur' )
										);
								} )
							),
							this.container.on(
								'click',
								b,
								this.bind( function ( b ) {
									this.isInterfaceEnabled() &&
										( a( b.target ).closest(
											'.select2-search-choice'
										).length > 0 ||
											( this.selectChoice( null ),
											this.clearPlaceholder(),
											this.container.hasClass(
												'select2-container-active'
											) ||
												this.opts.element.trigger(
													a.Event( 'select2-focus' )
												),
											this.open(),
											this.focusSearch(),
											b.preventDefault() ) );
								} )
							),
							this.container.on(
								'focus',
								b,
								this.bind( function () {
									this.isInterfaceEnabled() &&
										( this.container.hasClass(
											'select2-container-active'
										) ||
											this.opts.element.trigger(
												a.Event( 'select2-focus' )
											),
										this.container.addClass(
											'select2-container-active'
										),
										this.dropdown.addClass(
											'select2-drop-active'
										),
										this.clearPlaceholder() );
								} )
							),
							this.initContainerWidth(),
							this.opts.element.hide(),
							this.clearSearch();
					},
					enableInterface: function () {
						this.parent.enableInterface.apply( this, arguments ) &&
							this.search.prop(
								'disabled',
								! this.isInterfaceEnabled()
							);
					},
					initSelection: function () {
						if (
							( '' === this.opts.element.val() &&
								'' === this.opts.element.text() &&
								( this.updateSelection( [] ),
								this.close(),
								this.clearSearch() ),
							this.select || '' !== this.opts.element.val() )
						) {
							var c = this;
							this.opts.initSelection.call(
								null,
								this.opts.element,
								function ( a ) {
									a !== b &&
										null !== a &&
										( c.updateSelection( a ),
										c.close(),
										c.clearSearch() );
								}
							);
						}
					},
					clearSearch: function () {
						var a = this.getPlaceholder(),
							c = this.getMaxSearchWidth();
						a !== b &&
						0 === this.getVal().length &&
						this.search.hasClass( 'select2-focused' ) === ! 1
							? ( this.search
									.val( a )
									.addClass( 'select2-default' ),
							  this.search.width(
									c > 0 ? c : this.container.css( 'width' )
							  ) )
							: this.search.val( '' ).width( 10 );
					},
					clearPlaceholder: function () {
						this.search.hasClass( 'select2-default' ) &&
							this.search
								.val( '' )
								.removeClass( 'select2-default' );
					},
					opening: function () {
						this.clearPlaceholder(),
							this.resizeSearch(),
							this.parent.opening.apply( this, arguments ),
							this.focusSearch(),
							'' === this.search.val() &&
								this.nextSearchTerm != b &&
								( this.search.val( this.nextSearchTerm ),
								this.search.select() ),
							this.updateResults( ! 0 ),
							this.opts.shouldFocusInput( this ) &&
								this.search.focus(),
							this.opts.element.trigger(
								a.Event( 'select2-open' )
							);
					},
					close: function () {
						this.opened() &&
							this.parent.close.apply( this, arguments );
					},
					focus: function () {
						this.close(), this.search.focus();
					},
					isFocused: function () {
						return this.search.hasClass( 'select2-focused' );
					},
					updateSelection: function ( b ) {
						var c = [],
							d = [],
							e = this;
						a( b ).each( function () {
							p( e.id( this ), c ) < 0 &&
								( c.push( e.id( this ) ), d.push( this ) );
						} ),
							( b = d ),
							this.selection
								.find( '.select2-search-choice' )
								.remove(),
							a( b ).each( function () {
								e.addSelectedChoice( this );
							} ),
							e.postprocessResults();
					},
					tokenize: function () {
						var a = this.search.val();
						( a = this.opts.tokenizer.call(
							this,
							a,
							this.data(),
							this.bind( this.onSelect ),
							this.opts
						) ),
							null != a &&
								a != b &&
								( this.search.val( a ),
								a.length > 0 && this.open() );
					},
					onSelect: function ( a, c ) {
						this.triggerSelect( a ) &&
							'' !== a.text &&
							( this.addSelectedChoice( a ),
							this.opts.element.trigger( {
								type: 'selected',
								val: this.id( a ),
								choice: a,
							} ),
							( this.nextSearchTerm = this.opts.nextSearchTerm(
								a,
								this.search.val()
							) ),
							this.clearSearch(),
							this.updateResults(),
							( this.select || ! this.opts.closeOnSelect ) &&
								this.postprocessResults(
									a,
									! 1,
									this.opts.closeOnSelect === ! 0
								),
							this.opts.closeOnSelect
								? ( this.close(), this.search.width( 10 ) )
								: this.countSelectableResults() > 0
								? ( this.search.width( 10 ),
								  this.resizeSearch(),
								  this.getMaximumSelectionSize() > 0 &&
								  this.val().length >=
										this.getMaximumSelectionSize()
										? this.updateResults( ! 0 )
										: this.nextSearchTerm != b &&
										  ( this.search.val(
												this.nextSearchTerm
										  ),
										  this.updateResults(),
										  this.search.select() ),
								  this.positionDropdown() )
								: ( this.close(), this.search.width( 10 ) ),
							this.triggerChange( { added: a } ),
							( c && c.noFocus ) || this.focusSearch() );
					},
					cancel: function () {
						this.close(), this.focusSearch();
					},
					addSelectedChoice: function ( c ) {
						var j,
							k,
							d = ! c.locked,
							e = a(
								"<li class='select2-search-choice'>    <div></div>    <a href='#' class='select2-search-choice-close' tabindex='-1'></a></li>"
							),
							f = a(
								"<li class='select2-search-choice select2-locked'><div></div></li>"
							),
							g = d ? e : f,
							h = this.id( c ),
							i = this.getVal();
						( j = this.opts.formatSelection(
							c,
							g.find( 'div' ),
							this.opts.escapeMarkup
						) ),
							j != b &&
								g
									.find( 'div' )
									.replaceWith(
										a( '<div></div>' ).html( j )
									),
							( k = this.opts.formatSelectionCssClass(
								c,
								g.find( 'div' )
							) ),
							k != b && g.addClass( k ),
							d &&
								g
									.find( '.select2-search-choice-close' )
									.on( 'mousedown', A )
									.on(
										'click dblclick',
										this.bind( function ( b ) {
											this.isInterfaceEnabled() &&
												( this.unselect(
													a( b.target )
												),
												this.selection
													.find(
														'.select2-search-choice-focus'
													)
													.removeClass(
														'select2-search-choice-focus'
													),
												A( b ),
												this.close(),
												this.focusSearch() );
										} )
									)
									.on(
										'focus',
										this.bind( function () {
											this.isInterfaceEnabled() &&
												( this.container.addClass(
													'select2-container-active'
												),
												this.dropdown.addClass(
													'select2-drop-active'
												) );
										} )
									),
							g.data( 'select2-data', c ),
							g.insertBefore( this.searchContainer ),
							i.push( h ),
							this.setVal( i );
					},
					unselect: function ( b ) {
						var d,
							e,
							c = this.getVal();
						if (
							( ( b = b.closest( '.select2-search-choice' ) ),
							0 === b.length )
						)
							throw (
								'Invalid argument: ' +
								b +
								'. Must be .select2-search-choice'
							);
						if ( ( d = b.data( 'select2-data' ) ) ) {
							var f = a.Event( 'select2-removing' );
							if (
								( ( f.val = this.id( d ) ),
								( f.choice = d ),
								this.opts.element.trigger( f ),
								f.isDefaultPrevented() )
							)
								return ! 1;
							for ( ; ( e = p( this.id( d ), c ) ) >= 0;  )
								c.splice( e, 1 ),
									this.setVal( c ),
									this.select && this.postprocessResults();
							return (
								b.remove(),
								this.opts.element.trigger( {
									type: 'select2-removed',
									val: this.id( d ),
									choice: d,
								} ),
								this.triggerChange( { removed: d } ),
								! 0
							);
						}
					},
					postprocessResults: function ( a, b, c ) {
						var d = this.getVal(),
							e = this.results.find( '.select2-result' ),
							f = this.results.find(
								'.select2-result-with-children'
							),
							g = this;
						e.each2( function ( a, b ) {
							var c = g.id( b.data( 'select2-data' ) );
							p( c, d ) >= 0 &&
								( b.addClass( 'select2-selected' ),
								b
									.find( '.select2-result-selectable' )
									.addClass( 'select2-selected' ) );
						} ),
							f.each2( function ( a, b ) {
								b.is( '.select2-result-selectable' ) ||
									0 !==
										b.find(
											'.select2-result-selectable:not(.select2-selected)'
										).length ||
									b.addClass( 'select2-selected' );
							} ),
							-1 == this.highlight() &&
								c !== ! 1 &&
								this.opts.closeOnSelect === ! 0 &&
								g.highlight( 0 ),
							! this.opts.createSearchChoice &&
								! e.filter(
									'.select2-result:not(.select2-selected)'
								).length > 0 &&
								( ! a ||
									( a &&
										! a.more &&
										0 ===
											this.results.find(
												'.select2-no-results'
											).length ) ) &&
								J(
									g.opts.formatNoMatches,
									'formatNoMatches'
								) &&
								this.results.append(
									"<li class='select2-no-results'>" +
										K(
											g.opts.formatNoMatches,
											g.opts.element,
											g.search.val()
										) +
										'</li>'
								);
					},
					getMaxSearchWidth: function () {
						return this.selection.width() - t( this.search );
					},
					resizeSearch: function () {
						var a,
							b,
							c,
							d,
							e,
							f = t( this.search );
						( a = C( this.search ) + 10 ),
							( b = this.search.offset().left ),
							( c = this.selection.width() ),
							( d = this.selection.offset().left ),
							( e = c - ( b - d ) - f ),
							a > e && ( e = c - f ),
							40 > e && ( e = c - f ),
							0 >= e && ( e = a ),
							this.search.width( Math.floor( e ) );
					},
					getVal: function () {
						var a;
						return this.select
							? ( ( a = this.select.val() ), null === a ? [] : a )
							: ( ( a = this.opts.element.val() ),
							  s(
									a,
									this.opts.separator,
									this.opts.transformVal
							  ) );
					},
					setVal: function ( b ) {
						var c;
						this.select
							? this.select.val( b )
							: ( ( c = [] ),
							  a( b ).each( function () {
									p( this, c ) < 0 && c.push( this );
							  } ),
							  this.opts.element.val(
									0 === c.length
										? ''
										: c.join( this.opts.separator )
							  ) );
					},
					buildChangeDetails: function ( a, b ) {
						for (
							var b = b.slice( 0 ), a = a.slice( 0 ), c = 0;
							c < b.length;
							c++
						)
							for ( var d = 0; d < a.length; d++ )
								r(
									this.opts.id( b[ c ] ),
									this.opts.id( a[ d ] )
								) &&
									( b.splice( c, 1 ),
									c > 0 && c--,
									a.splice( d, 1 ),
									d-- );
						return { added: b, removed: a };
					},
					val: function ( c, d ) {
						var e,
							f = this;
						if ( 0 === arguments.length ) return this.getVal();
						if (
							( ( e = this.data() ),
							e.length || ( e = [] ),
							! c && 0 !== c )
						)
							return (
								this.opts.element.val( '' ),
								this.updateSelection( [] ),
								this.clearSearch(),
								d &&
									this.triggerChange( {
										added: this.data(),
										removed: e,
									} ),
								void 0
							);
						if ( ( this.setVal( c ), this.select ) )
							this.opts.initSelection(
								this.select,
								this.bind( this.updateSelection )
							),
								d &&
									this.triggerChange(
										this.buildChangeDetails(
											e,
											this.data()
										)
									);
						else {
							if ( this.opts.initSelection === b )
								throw new Error(
									'val() cannot be called if initSelection() is not defined'
								);
							this.opts.initSelection(
								this.opts.element,
								function ( b ) {
									var c = a.map( b, f.id );
									f.setVal( c ),
										f.updateSelection( b ),
										f.clearSearch(),
										d &&
											f.triggerChange(
												f.buildChangeDetails(
													e,
													f.data()
												)
											);
								}
							);
						}
						this.clearSearch();
					},
					onSortStart: function () {
						if ( this.select )
							throw new Error(
								"Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead."
							);
						this.search.width( 0 ), this.searchContainer.hide();
					},
					onSortEnd: function () {
						var b = [],
							c = this;
						this.searchContainer.show(),
							this.searchContainer.appendTo(
								this.searchContainer.parent()
							),
							this.resizeSearch(),
							this.selection
								.find( '.select2-search-choice' )
								.each( function () {
									b.push(
										c.opts.id(
											a( this ).data( 'select2-data' )
										)
									);
								} ),
							this.setVal( b ),
							this.triggerChange();
					},
					data: function ( b, c ) {
						var e,
							f,
							d = this;
						return 0 === arguments.length
							? this.selection
									.children( '.select2-search-choice' )
									.map( function () {
										return a( this ).data( 'select2-data' );
									} )
									.get()
							: ( ( f = this.data() ),
							  b || ( b = [] ),
							  ( e = a.map( b, function ( a ) {
									return d.opts.id( a );
							  } ) ),
							  this.setVal( e ),
							  this.updateSelection( b ),
							  this.clearSearch(),
							  c &&
									this.triggerChange(
										this.buildChangeDetails(
											f,
											this.data()
										)
									),
							  void 0 );
					},
				} ) ),
				( a.fn.select2 = function () {
					var d,
						e,
						f,
						g,
						h,
						c = Array.prototype.slice.call( arguments, 0 ),
						i = [
							'val',
							'destroy',
							'opened',
							'open',
							'close',
							'focus',
							'isFocused',
							'container',
							'dropdown',
							'onSortStart',
							'onSortEnd',
							'enable',
							'disable',
							'readonly',
							'positionDropdown',
							'data',
							'search',
						],
						j = [ 'opened', 'isFocused', 'container', 'dropdown' ],
						k = [ 'val', 'data' ],
						l = { search: 'externalSearch' };
					return (
						this.each( function () {
							if ( 0 === c.length || 'object' == typeof c[ 0 ] )
								( d =
									0 === c.length
										? {}
										: a.extend( {}, c[ 0 ] ) ),
									( d.element = a( this ) ),
									'select' ===
									d.element.get( 0 ).tagName.toLowerCase()
										? ( h = d.element.prop( 'multiple' ) )
										: ( ( h = d.multiple || ! 1 ),
										  'tags' in d &&
												( d.multiple = h = ! 0 ) ),
									( e = h
										? new window.Select2[ 'class' ].multi()
										: new window.Select2[
												'class'
										  ].single() ),
									e.init( d );
							else {
								if ( 'string' != typeof c[ 0 ] )
									throw (
										'Invalid arguments to select2 plugin: ' +
										c
									);
								if ( p( c[ 0 ], i ) < 0 )
									throw 'Unknown method: ' + c[ 0 ];
								if (
									( ( g = b ),
									( e = a( this ).data( 'select2' ) ),
									e === b )
								)
									return;
								if (
									( ( f = c[ 0 ] ),
									'container' === f
										? ( g = e.container )
										: 'dropdown' === f
										? ( g = e.dropdown )
										: ( l[ f ] && ( f = l[ f ] ),
										  ( g = e[ f ].apply(
												e,
												c.slice( 1 )
										  ) ) ),
									p( c[ 0 ], j ) >= 0 ||
										( p( c[ 0 ], k ) >= 0 &&
											1 == c.length ) )
								)
									return ! 1;
							}
						} ),
						g === b ? this : g
					);
				} ),
				( a.fn.select2.defaults = {
					width: 'copy',
					loadMorePadding: 0,
					closeOnSelect: ! 0,
					openOnEnter: ! 0,
					containerCss: {},
					dropdownCss: {},
					containerCssClass: '',
					dropdownCssClass: '',
					formatResult: function ( a, b, c, d ) {
						var e = [];
						return E( this.text( a ), c.term, e, d ), e.join( '' );
					},
					transformVal: function ( b ) {
						return a.trim( b );
					},
					formatSelection: function ( a, c, d ) {
						return a ? d( this.text( a ) ) : b;
					},
					sortResults: function ( a ) {
						return a;
					},
					formatResultCssClass: function ( a ) {
						return a.css;
					},
					formatSelectionCssClass: function () {
						return b;
					},
					minimumResultsForSearch: 0,
					minimumInputLength: 0,
					maximumInputLength: null,
					maximumSelectionSize: 0,
					id: function ( a ) {
						return a == b ? null : a.id;
					},
					text: function ( b ) {
						return b && this.data && this.data.text
							? a.isFunction( this.data.text )
								? this.data.text( b )
								: b[ this.data.text ]
							: b.text;
					},
					matcher: function ( a, b ) {
						return (
							o( '' + b )
								.toUpperCase()
								.indexOf( o( '' + a ).toUpperCase() ) >= 0
						);
					},
					separator: ',',
					tokenSeparators: [],
					tokenizer: M,
					escapeMarkup: F,
					blurOnChange: ! 1,
					selectOnBlur: ! 1,
					adaptContainerCssClass: function ( a ) {
						return a;
					},
					adaptDropdownCssClass: function () {
						return null;
					},
					nextSearchTerm: function () {
						return b;
					},
					searchInputPlaceholder: '',
					createSearchChoicePosition: 'top',
					shouldFocusInput: function ( a ) {
						var b =
							'ontouchstart' in window ||
							navigator.msMaxTouchPoints > 0;
						return b
							? a.opts.minimumResultsForSearch < 0
								? ! 1
								: ! 0
							: ! 0;
					},
				} ),
				( a.fn.select2.locales = [] ),
				( a.fn.select2.locales.en = {
					formatMatches: function ( a ) {
						return 1 === a
							? 'One result is available, press enter to select it.'
							: a +
									' results are available, use up and down arrow keys to navigate.';
					},
					formatNoMatches: function () {
						return 'No matches found';
					},
					formatAjaxError: function () {
						return 'Loading failed';
					},
					formatInputTooShort: function ( a, b ) {
						var c = b - a.length;
						return (
							'Please enter ' +
							c +
							' or more character' +
							( 1 == c ? '' : 's' )
						);
					},
					formatInputTooLong: function ( a, b ) {
						var c = a.length - b;
						return (
							'Please delete ' +
							c +
							' character' +
							( 1 == c ? '' : 's' )
						);
					},
					formatSelectionTooBig: function ( a ) {
						return (
							'You can only select ' +
							a +
							' item' +
							( 1 == a ? '' : 's' )
						);
					},
					formatLoadMore: function () {
						return 'Loading more results\u2026';
					},
					formatSearching: function () {
						return 'Searching\u2026';
					},
				} ),
				a.extend( a.fn.select2.defaults, a.fn.select2.locales.en ),
				( a.fn.select2.ajaxDefaults = {
					transport: a.ajax,
					params: { type: 'GET', cache: ! 1, dataType: 'json' },
				} ),
				( window.Select2 = {
					query: { ajax: G, local: H, tags: I },
					util: {
						debounce: w,
						markMatch: E,
						escapeMarkup: F,
						stripDiacritics: o,
					},
					class: { abstract: c, single: d, multi: e },
				} );
		}
	} )( jQuery );
